同时迭代两个数组的jQuery each循环

10

我有两个大小相同的 Javascript 数组

var demo=new Array();
var demo3=new Array();

我需要在jQuery代码中的一个 each 循环中访问两个数组的值。经过一番搜索,我发现了 zip 操作,并尝试使用以下代码:

$.zip(demo,demo3).each(function(){                                   
    alert("demo "+this[0]);
    alert("demo3 "+this[1]);      
});

然而这段代码不起作用。请帮忙。

4个回答

19

因为它们的大小相同,所以只需循环一个,并使用i引用另一个。

$.each(demo, function(i, item) {
    console.log(demo[i], demo3[i]);
});

如果您不需要将索引配对,那么只需使用.concat将它们依次运行即可。

$.each(demo.concat(demo3), function(i, item) {
    console.log(item);
});

10

他们确定会保持相同的大小吗?使用一个好用的旧式for循环:

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

3

如果您想联合迭代,请尝试使用 .concat

$.each(demo.concat(demo3), function (idx, el) {
     alert(el);
});

否则,只需迭代数组并使用索引访问下一个即可。
$.each(demo, function (idx, el) {
     alert(el);
     alert(demo3[idx]);
});

0
如果您想使用underscore的zip功能(http://underscorejs.org/#zip),可以执行以下操作:
var combined = _.zip(demo, demo3);
$.each(combined, function(index, value) {
    // value[0] is equal to demo[index]
    // value[1] is equal to demo3[index]

});
​

演示:http://jsfiddle.net/lucuma/jWbFf/ _zip文档:将每个数组的值与相应位置上的值合并在一起。当您有通过匹配数组索引协调的单独数据源时非常有用。如果您正在使用嵌套数组的矩阵,则zip.apply可以以类似的方式转置矩阵。

http://underscorejs.org/#zip

所有这些说了,一个简单的for循环在这种情况下非常容易和高效。


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