javascript - 计算 2 个数组中的每个值,如果每个数组的长度不相同,则推送长度较长的值

标签 javascript arrays for-loop numbers boolean

如何将大于另一个长度的数组长度中的计数值压入?

假设我想添加和减去 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 longerarr1 长度

我想要的结果是 [ 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/

相关文章:

javascript - i++ 与 JavaScript for 循环中的++i

javascript - 循环一组名称,每隔一段时间采取行动

javascript - 联系表 7 : Not routing to new page

javascript - Jest 箭头语法导致错误

Javascript 整数数组错误

c - 如何在C中生成一次范围内的随机数?

c# - 在 C# 中从一个数组转换为另一个数组

javascript - body 标签可以容纳乘法 onload ="setInterval()"吗?

javascript - 如何让一条线跟随鼠标悬停,同时放大图表?

c++ - for 循环异常 C++