JavaScript动态数组如何影响$.each循环?

3
我已经动态创建了以下数组索引。
var array=[];
array[4]=[];
array[6]=[];
array[100]=[];

然后我尝试在这些索引上添加一些数据。
array[4].push({"id":3,"name":"dhaval"});
array[6].push({"id":6,"name":"harsh"});
array[100].push({"id":9,"name":"kevin"});

当我使用$.each来检索数据时,$.each循环从0到100。

$.each(array,function(key,item){
    console.log(item);
});

问题在于我必须每次检查该项是否未定义,然后才能确定数据可能存在。那么仅循环三次而不是100次的可能解决方案是什么呢?
输出:

4 undefined javascript_Each.html:23

[对象] javascript_Each.html:23

未定义 javascript_Each.html:23

[对象] javascript_Each.html:23

93 undefined javascript_Each.html:23

[对象]


1
循环将执行100次,但是您可以检查item是否已定义。 - Satpal
在你的循环中添加:if(item!==undefined)。 - sinisake
3个回答

7
你可以使用本地的forEach函数来代替jQuery的each函数。forEach回调不会为未初始化的值调用。代码如下:

var array = [];
array[4] = [];
array[6] = [];
array[100] = [];
array.forEach(function(item, key) {
  console.log(item);
});

在这种情况下,回调函数仅被调用三次。

谢谢你这个兄弟 @jobB - Dhaval Purohit

1
这是因为$.each只会执行函数,如果值(item)不是undefined。
如果您运行此代码,将显示所有位置:
for (var i = 0; i < array.length; i++) {
  console.log(i, array[i]);
}

0

你可以使用forEach

var a = ["a", "b", "c"];

a.forEach(function(element) {
    console.log(element);
});

// a
// b
// c

使用eval()动态定义变量


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