我已动态创建了以下数组索引
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
[对象]
答案 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)