2017-01-05 7 views
2

動的配列を$.each()までループできないのはなぜですか?

var array = []; 
array['one'] = 'two'; 
$.each(array, function(key, value) 
{ 
    //not get in loop 
    alert(value); 
}); 

答えて

10

アレイの場合、$.each()は、番号付きインデックスをループします。名前付きプロパティをループする場合は、オブジェクトを使用する必要があります。

var obj = {}; 
 
obj['one'] = 'two'; 
 
$.each(obj, function(key, value) 
 
{ 
 
    console.log(key, value); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

これはdocumentationに説明する:

配列と長さ特性を有するアレイ状の物体(例えば、関数の引数としてのオブジェクト)が、数値インデックスによって反復されます0からlength-1までです。他のオブジェクトは、名前付きプロパティを使用して反復されます。

+0

ドキュメント:http://api.jquery.com/jquery.each/ – abc123

+0

あなたは、配列を使用したい場合は、配列 'にOPコードの2行目を変更する[0] =「2」;' – depperm

+0

私は彼が "ダイナミックアレイ"と言うとき、彼は名前付きプロパティを持つ何かを意味すると思います。 – Barmar

関連する問題