我有:
var array1 = [];
var array2 = [];
array1
包含1
,2
array2
包含3
,4
我想这样做:
for(var a in array1){
for(var b in array2){
doSomething(array1[a],array2[b]);
}
}
但问题是函数doSomething()
因为两个for
而对每个数组运行两次。
如何只运行一次但是使用所有数组?
修改
数字不是按升序排列的!在我的真实项目中,ID
是任何顺序的任何数字。
答案 0 :(得分:3)
您不应该使用for..in
来循环遍历数组。使用索引变量:
for (var i = 0, len = array1.length; i < len; i++) {
doSomething(array1[i], array2[i]);
}
这当然假设它们的长度相同。
答案 1 :(得分:1)
我认为这就是你所追求的:
for(var i=0; i<array1.length; i++){
doSomething(array1[i],array2[i]);
}
这循环遍历两个数组,使用第一个作为长度,并在每个doSomething()
调用中将元素放在相同的索引处。
答案 2 :(得分:1)
如果您确定两个阵列的长度完全相同,则可以执行以下操作:
for (var i = 0; i < array1.length; i++) {
doSomething(array1[i], array2[i]);
}
答案 3 :(得分:1)
看起来你想要将两个数组连接在一起。使用concat()函数:
var jointArray = array1.concat(array2);
for(var i=0; i < jointArray.length; i++) {
doSomething(jointArray[i]);
}
请参阅:
答案 4 :(得分:1)
这个if数组长度不一样
for (var i = 0, i < (array1.length <= array2.length ? array1.length : array2.length); i++) {
doSomething(array1[i], array2[i]);
}
答案 5 :(得分:1)
DoSomething将运行4次。如果你想让它只运行两个列表中的值,请删除第二个for循环并用Do中替换DoSomething中的b。