与自身进行数组迭代

时间:2013-11-27 08:01:13

标签: javascript

我有一系列值,如:

["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中迭代它们的最佳方法是什么? 我很容易想到两个数组具有相同的值,并在第一个数组和第二个数组之间进行交互,但可能存在更好的性能方式......

先谢谢大家! 干杯, 路易

3 个答案:

答案 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]