インデックスキーと内部オブジェクトの両方をフェッチする必要があるときに、次のコードスニペットを使用して以下に示すJSオブジェクトをループしようとしています。
以下は機能しないので、一体どうやってこれを行うべきですか?
({ prop_1:["1", "2"],
prop_2:["3", "4"]})
$.each(myObject, function(key,valueObj){
alert(key + "/" + valueObj.toSource() );
});
prop_1 / (["1", "2"])
正常にフェッチしている内部オブジェクト、valueObj
は配列であり、メソッド.toSource()
(少なくともクロスブラウザではありません)、それを削除するとアラートが表示されます:
_$.each(myObject, function(key,valueObj){
alert(key + "/" + valueObj );
});
_
ここでテストできます 、出力が次のとおりであることをスローしないでください:
_prop_1/1,2
prop_2/3,4
_
...配列のデフォルトの.toString()
はコンマ区切りのリストであるため、alert()
で表示されます。たとえば、代わりにalert(key + "/" + valueObj[0] );
を実行した場合、次のように表示されます。
_prop_1/1
prop_2/3
_
...必要な配列があることがわかります ここでテストできます 。
Forinループを使用できます。
var myObject = ({ prop_1:["1", "2"], prop_2:["3", "4"]})
for (var key in myObject) {
if (myObject.hasOwnProperty(key)) {
alert(key + "/" + myObject[key]);
}
}