同时比较两个数组并仅记录偶数

时间:2017-04-11 02:06:10

标签: javascript arrays performance

我正在尝试同时比较两个数组并仅记录偶数值。这是我提出的代码,它可以正确记录,但我确定这不是正确的方法。如何改进此代码?

“选择arr1和arr2并仅记录偶数”

const arr1 = [5,8,2,1,5,7,3,4,5,8,1,2,4,8,3,1,4,5]; 
const arr2 = [15,26,74,12,3,6,9,1,2,5]; 

for (var i=0; i < arr1.length; i++) {
    if ((arr1[i] % 2) === 0) {
        console.log(arr1[i]);
    }
}

for (var i=0; i < arr2.length; i++) {
    if ((arr2[i] % 2) ===0) {
        console.log (arr2[i]);
    }
}

2 个答案:

答案 0 :(得分:0)

Concat你的数组,然后在单个数组上运行代码。

const arr1 = [5, 8, 2, 1, 5, 7, 3, 4, 5, 8, 1, 2, 4, 8, 3, 1, 4, 5];
const arr2 = [15, 26, 74, 12, 3, 6, 9, 1, 2, 5];

const mergedArray = arr1.concat(arr2);

for (var i = 0; i < mergedArray.length; i++) {
  if ((mergedArray[i] % 2) === 0) {
    console.log(mergedArray[i]);
  }
}

答案 1 :(得分:0)

如果不能添加更多空间,您也可以在一个循环中遍历两个数组并检查两者中的偶数。运行两个for循环会更高效,其中第一个来自0 to min(arr1.length, arr2.length)而第二个来自min(arr1.length, arr2.length) to max(arr2.length,arr1.length)(当然,您必须检查哪个更高级)。另外,我相信you should go here有关提高正确运行的代码效率的问题。

&#13;
&#13;
const arr1 = [5, 8, 2, 1, 5, 7, 3, 4, 5, 8, 1, 2, 4, 8, 3, 1, 4, 5];
const arr2 = [15, 26, 74, 12, 3, 6, 9, 1, 2, 5];
const mx = Math.max(arr1.length, arr2.length);
for (var i = 0; i < mx; i++) {
  if ( i < arr1.length && (arr1[i] % 2 === 0)) {
    console.log(arr1[i]);
  }
  if ( i < arr2.length && (arr2[i] % 2 === 0)) {
    console.log(arr2[i]);
  }
}
&#13;
&#13;
&#13;