在javascript中使用两个不同长度数组的数学运算

时间:2015-10-09 08:52:00

标签: javascript arrays loops size

我有2个不同大小的数组,如下所示:

var array1 = [1, 2, 3, 4, 5, 6];
var array2 = [1, 2, 3];

我想这样做:

for (i = 0; i < array1.length; i++) {
    console.log(array1[i] / array2[i]);
}

当array1.length&gt;时,我该怎么做才能回到array2的开头? array2.length?

为了获得:1/2 - 2/2 - 3/3 - 4/1 - 5/2 - 6-3

我尝试放置2个循环,但它不起作用。

3 个答案:

答案 0 :(得分:1)

使用modulo环绕:

for(i=0; i< array1.length ; i++){
    console.log(array1[i] / array2[i % array2.length]);
}

答案 1 :(得分:0)

您可以使用模运算符来舍入数组的索引。模数%将在除法后返回余数,因此使用anyNumber % arrLen将始终小于arrLen

&#13;
&#13;
var array1 = [1, 2, 3, 4, 5, 6];
var array2 = [1, 2, 3];
var firstArrLen = array1.length,
  secondArrayLen = array2.length;

for (i = 0; i < Math.max(firstArrLen, secondArrayLen); i++) {
  document.write('<pre>' + (array1[i % firstArrLen] / array2[i % secondArrayLen]) + '</pre>');
}
&#13;
&#13;
&#13;

答案 2 :(得分:0)

其他解决方案可以很好地完成工作。我建议使用map作为第一个数组,使代码看起来不错:

var result = array1.map(function(e, i) {
    return e + '/' + array2[i % array2.length];
});

console.log( result );  // ["1/1", "2/2", "3/3", "4/1", "5/2", "6/3"]

将字符串'/'替换为/(除法运算符)以获取实际值。