2011-01-05 4 views
14

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

次のように、私はこれをどのように行うべきですか?

オブジェクト:

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

マイコード:

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

予想される出力:

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

答えて

22

あなたは罰金フェッチしている内部オブジェクト、valueObj配列です、それだけでは方法がありません.toSource()(leasトンとにかくないクロスブラウザ)、あなたは警告買ってあげることを削除する場合:出力はちょうどであることをスローすることはありません、

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

You can test it out hereを:

prop_1/1,2 
prop_2/3,4 

...配列のデフォルトの.toString()はコンマで区切られたリストなので、alert()と表示されます。

prop_1/1 
prop_2/3 

を...ので、あなたはあなたが欲しいアレイ、you can test that hereを持っている見ることができます:あなたの代わりにalert(key + "/" + valueObj[0]);をした場合たとえば、あなたは参照してくださいね。

3

あなたは、ループ内でのために使用することもできます。これは、同様の機能が含まれます

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

、そうtypeof' 'でそれらをフィルタリングするようにしてくださいあなたがそれらをしたくない場合。 (JavaScript、良い部品、3.7列挙体) – mdup

関連する問題