我有两个大小不同的数组,如下所示:
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.ength>array2.ength时,我能做些什么才能回到array2的开头呢?
以便有: 1/2 - 2/2 - 3/3 - 4/1 - 5/2 - 6-3
我试着放两个循环,但不起作用。
发布于 2015-10-09 08:54:08
使用模包:
for(i=0; i< array1.length ; i++){
console.log(array1[i] / array2[i % array2.length]);
}发布于 2015-10-09 08:54:03
可以使用模运算符对数组的索引进行舍入。模%在除法后将返回余数,因此使用anyNumber % arrLen总是小于arrLen。
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>');
}
发布于 2015-10-09 09:00:14
其他解决方案做得很好。我可以建议对第一个数组使用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"]将字符串'/'替换为/ (除法操作符)以获得实际值。
https://stackoverflow.com/questions/33033912
复制相似问题