如何将大于另一个长度的数组长度中的计数值压入?
假设我想添加和减去 2 个数组中的值,
IF 'index' is even
we do arr1 + arr2
push to 'newarr'
ELSE IF 'index' is odd
we do arr1 - arr2
push to 'newarr'
IF the each arrays not same length
we should push that values array to newarr
案例:
function countTwoarray(arr1, arr2) {
var result = []
for(key in arr1 && arr2){
if(key % 2 === 0){
result.push(arr1[key] + arr2[key])
} else if(key % 2 === 1){
result.push(arr1[key] - arr2[key])
}
// else if(!key){
// result.push("in")
// }
}
return result
}
console.log(countTwoarray([1, 3, 2, 1, 1], [1, 2, 3, 4, 5,1000]))
// [ 2, 1, 5, -3, 6, 1000 ]
可以看到最后的结果是NaN
NaN 结果必须是 1000
因为这是 arr2
的值,length longer
比 arr1
长度
我想要的结果是 [ 2, 1, 5, -3, 6, 1000 ]
最佳答案
首先,拿一个经典for
statement带有索引计数器,而不是 for ... in
statement ,您可以在其中迭代的不仅仅是所需的索引。
然后用Math.min
取两个数组的最小长度的长度变量并通过使用 conditional (ternary) operator ?:
推差或求和来迭代数组[条件(三元)。
最后取出每个数组的其余部分并将这些值推送到结果集 Array#slice
从最小长度开始 spread syntax ...
,其中每一项都作为参数。
function countTwoarray(arr1, arr2) {
var result = [],
i,
l = Math.min(arr1.length, arr2.length)
for (i = 0; i < l; i++) {
result.push(i % 2 ? arr1[i] - arr2[i] : arr1[i] + arr2[i]);
}
result.push(...arr1.slice(l), ...arr2.slice(l));
return result;
}
console.log(countTwoarray([1, 3, 2, 1, 1], [1, 2, 3, 4, 5, 1000]));
关于javascript - 计算 2 个数组中的每个值,如果每个数组的长度不相同,则推送长度较长的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54198364/