我有一系列值,如:
["34.44","55.22","15.32","21.67","98.76","14.57"]
我希望像
一样在自己之间进行迭代Calculate(34.44, 55.22);
Calculate(34.44, 15.32);
Calculate(34.44, 21.67);
Calculate(34.44, 98.76);
Calculate(34.44, 14.57);
Calculate(55.22, 15.32);
Calculate(55.22, 21.67);
Calculate(55.22, 98.76);
依旧......
在Javascript中迭代它们的最佳方法是什么? 我很容易想到两个数组具有相同的值,并在第一个数组和第二个数组之间进行交互,但可能存在更好的性能方式......
先谢谢大家! 干杯, 路易
答案 0 :(得分:4)
for( var i=0; i<myarray.length; i++ ) {
for( var j=i+1; j<myarray.length; j++ ) {
Calculate( myarray[i], myarray[j] );
}
}
答案 1 :(得分:0)
您可以在阵列上使用嵌套的forEach
方法。
var array = ["34.44", "55.22", "15.32", "21.67", "98.76", "14.57"];
array.forEach(function(numberLeft, indexLeft) {
array.forEach(function(numberRight, indexRight) {
// skip previous numbers and itself
if (indexLeft >= indexRight)
return;
Calculate( numberLeft, numberRight );
});
});
答案 2 :(得分:0)
Array.forEach
不允许进行这种迭代,你最好的选择就是在索引上做两个循环:
for (var i=0; i<x.length; i++) {
for (var j=i+1; j<x.length; j++) {
... do whatever you need with x[i], x[j] ...
}
}
如果相反,您需要处理x[a]
,x[a]
对(即两次相同的元素)以及x[a], x[b]
对和x[b], x[a]
对,然后forEach
可以缩短代码(并且可能会更快地运行)。
x.forEach(function(x1){ x.forEach(function(x2){
... do whatever you weant with x1, x2 ...
})});
但请注意,forEach
将仅针对实际已分配的元素进行迭代,而不是在所有范围0..length-1
中进行迭代。例如
x = [];
x[2] = 42;
循环x.forEach(...)
不会迭代未定义的元素x[0]
和x[1]
。