Object,Array和$ .each()

时间:2013-05-01 20:10:15

标签: javascript jquery arrays

我认为我使用建议here中的for(var key in arr)解决了我的问题,但这会导致IE出现问题。现在我回到原点。

var myVariable = [];

myVariable['option-1'] = 'something';
myVariable['option-2'] = 'something else';
$.each(myVariable, function(index, value) {
  alert(index + ': ' + value);
});

它不起作用。没有任何表现。有人可以编辑它以使其有效吗?

5 个答案:

答案 0 :(得分:4)

只需使用对象而不是数组:

var myVariable = {};

答案 1 :(得分:3)

var myVariable = [];更改为var myVariable = {};

您正在使用的语法myVariable['option-1'] = 'something';用于对象,而不是数组。

答案 2 :(得分:2)

myVariable是一个数组。要将数据添加到数组,请使用myVariable.push('something')。您正在使用方括号语法,这就是您通常如何向对象添加属性。

由于数组是对象,您仍然可以访问option-1,但它不是数组的成员,它是对象的属性:myVariable['option-1']; // "something"

解决方案是将myVariable设置为对象。 jQuery的each方法将按预期迭代对象的属性。

答案 3 :(得分:1)

不需要jQuery。
只需使用for..in循环(对象{}而不是数组[]):

for(var index in myVariable) {
   var value = myVariable[index];
   alert(index + ': ' + value);
}

答案 4 :(得分:1)

There are no associative arrays in JavaScript, and non-numeric properties on arrays are bad practise!

相反,请使用对象文字:

var myVariable = {};
//               ^^

myVariable['option-1'] = 'something';
…