10

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

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

我需要在 JQuery 代码中的每个循环中访问两个数组的值。冲浪一段时间后,我遇到了 zip 操作,我尝试使用代码

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

但是此代码不起作用。请帮助。

4

4 回答 4

18

由于它们的大小相同,因此只需循环一个,并用i.

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

如果您不需要配对索引,则只需使用.concat.

$.each(demo.concat(demo3), function(i, item) {
    console.log(item);
});
于 2012-09-25T14:42:02.720 回答
10

确定它们会保持相同的尺寸吗?使用一个好的 ol' for

for(var i = 0; i < demo.length; i++){
    console.log(demo[i]);
    console.log(demo3[i]);
}
于 2012-09-25T14:41:36.773 回答
3

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

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

否则只需迭代数组并使用索引访问下一个..

$.each(demo, function (idx, el) {
     alert(el);
     alert(demo3[idx]);
});
于 2012-09-25T14:43:05.003 回答
0

如果您尝试使用下划线 (http://underscorejs.org/#zip) 中的 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 Documentation: Merges together the values of each of the arrays with the values at the corresponding position. Useful when you have separate data sources that are coordinated through matching array indexes. If you're working with a matrix of nested arrays, zip.apply can transpose the matrix in a similar fashion.

http://underscorejs.org/#zip

All that said, a plain for loop is quite easy and efficient in this case.

于 2012-09-25T14:53:54.993 回答