JQuery:无法通过$.each循环动态数组

4
为什么不能通过 $.each() 循环遍历动态数组?
var array = [];
array['one'] = 'two';
$.each(array, function( key, value )
{
    //not get in loop
    alert(value);
});
1个回答

15

$.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>

这在文档中有解释:

具有length属性的数组和类数组对象(如函数的参数对象)通过数字索引从0到length-1进行迭代。其他对象通过它们的命名属性进行迭代。


如果你想使用一个数组,将 OP 代码的第二行改为 array[0] = 'two'; - depperm
我认为他所说的“动态数组”是指具有命名属性的某些东西。 - Barmar
可能值得指出的是对象的点表示法,同时了解如何使用方括号和点表示法也非常方便。 - random_user_name
@cale_b 再次提到“dynamic”,意味着它将是一个变量,而他只是在MCVE中使用了字面值。 - Barmar
哇,直到现在我才意识到这个。救命稻草 :) - melvin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接