5

現在、.each を使用して配列をフェッチしています。

$.each(messages, function(key,message){ doStuff(); });

ただし、キーは配列のインデックスであり、連想キーではありません。

どうすれば簡単に入手できますか?

4

3 に答える 3

19

JavaScriptには「連想配列」はありません。配列があります:

[1, 2, 3, 4, 5]

そしてオブジェクト:

{a: 1, b: 2, c: 3, d: 4, e: 5}

アレイには「キー」がありません。それらには、0からカウントされるインデックスがあります。

配列には、を使用してアクセスし[]、オブジェクトには、[]またはを使用してアクセスできます.

例:

var array = [1,2,3];
array[1] = 4;
console.log(array); // [1,4,3]

var obj = {};
obj.test = 16;
obj['123'] = 24;
console.log(obj); // {test: 16, 123: 24}

intの代わりに文字列をキーとして使用して配列にアクセスしようとすると、問題が発生する可能性があります。値ではなく、配列のプロパティを設定します。

var array = [1,2,3];
array['test'] = 4; // This doesn't set a value in the array
console.log(array); // [1,2,3]
console.log(array.test); // 4

jQuery$.eachはこれらの両方で動作します。のコールバックで$.eachは、最初のパラメータ、keyはオブジェクトのキーまたは配列のインデックスのいずれかです。

$.each([1, 2, 3, 4, 5], function(key, value){
    console.log(key); // Logs 0 1 2 3 4
});

$.each({a: 1, b: 2, c: 3, d: 4, e: 5}, function(key, value){
    console.log(key); // Logs 'a' 'b' 'c' 'd' 'e'
});
于 2012-06-07T17:09:16.493 に答える
9
var data = {
    val1 : 'text1',
    val2 : 'text2',
    val3 : 'text3'
};
$.each(data, function(key, value) {
    alert( "The key is '" + key + "' and the value is '" + value + "'" );
});
​

デモを見る

于 2012-06-07T17:06:46.323 に答える
0

JavaScript には、PHP のような「連想配列」はありませんが、オブジェクトがあります。ただし、オブジェクトには、値に対応する文字列キーがある場合があります。配列は数値でインデックス付けされた値のリストであるため、keyが数値の場合、オブジェクトではなく、操作している配列である必要があります。したがって、キーがないため、キーを取得できません。

したがって、おそらくfor$.each.

于 2012-06-07T17:08:05.263 に答える