web-dev-qa-db-ja.com

jQuery:オブジェクトを適切にループしますか?

インデックスキーと内部オブジェクトの両方をフェッチする必要があるときに、次のコードスニペットを使用して以下に示すJSオブジェクトをループしようとしています。

以下は機能しないので、一体どうやってこれを行うべきですか?

オブジェクト:

({ prop_1:["1", "2"],
 prop_2:["3", "4"]})

私のコード:

$.each(myObject, function(key,valueObj){
    alert(key + "/" + valueObj.toSource() );
});

期待される出力:

prop_1 / (["1", "2"])
18
Industrial

正常にフェッチしている内部オブジェクト、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
_

...必要な配列があることがわかります ここでテストできます

31
Nick Craver

Forinループを使用できます。

    var myObject = ({ prop_1:["1", "2"], prop_2:["3", "4"]})
    for (var key in myObject) {
       if (myObject.hasOwnProperty(key)) {
           alert(key + "/" + myObject[key]);
        }
     }
4
Steve