影响$ .each循环的Javascript动态数组

时间:2016-12-19 12:16:08

标签: javascript jquery html arrays

我已动态创建了以下数组索引

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

     

[Object] javascript_Each.html:23

     

undefined javascript_Each.html:23

     

[Object] javascript_Each.html:23

     

93 undefined javascript_Each.html:23

     

[对象]

3 个答案:

答案 0 :(得分:7)

您可以使用本机forEach函数代替jQuery each函数。未初始化的值不会调用forEach回调。看起来像这样:

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

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

答案 1 :(得分:1)

这是因为如果值(item)与undefined不同,$ .each只执行函数。

如果您运行此代码将显示所有位置:

for (var i = 0; i < array.length; i++) {
  console.log(i, array[i]);
}

答案 2 :(得分:0)

您可以使用forEach

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

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

// a
// b
// c

eval()定义动态变量