2017-04-11 6 views
-2

2つのアレイを同時に比較し、偶数の値だけを記録しようとしています。これは私が思いついたコードですが、正しくログしますが、これは正しい方法ではないと確信しています。このコードを改善するにはどうすればよいですか?2つのアレイを同時に比較し、偶数だけを記録する

「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]); 
    } 
} 
+1

[なぜ "誰かが私を助けることはできますか?" され実際の質問ではありませんか?](https://meta.stackoverflow.com/q/284236/62576) –

+0

あなたはそれに間違っていると思いますか? – kman

+0

これはいくつかの言語で動作すると思いますが、どちらを使用しているのかを明示的に指定できますか? – Scheme

答えて

0

連結方式のあなたの配列をして、単一のアレイ上でコードを実行します。

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]); 
 
    } 
 
}

+0

このコードの動作は完璧ですが、問題は配列に既に存在する要素に対する解決策がないことです。 –

+1

OPは各要素が1回だけ印刷されることを決して要求しなかった。この要求は、2つのアレイ内のすべての偶数をより効率的に印刷することでした –

0

また、単に一つのループで両方の配列を横断し、あなたがより多くのスペースを追加することができない場合の両方で偶数かどうかを確認できます。 2つのforループを実行する方が効率的です。最初のループは0 to min(arr1.length, arr2.length)になり、2番目のループはmin(arr1.length, arr2.length) to max(arr2.length,arr1.length)になります(どちらが先に大きいかを確認する必要があります)。また、正しく実行されるコードの効率を向上させることに関連する質問についてはyou should go hereと考えています。

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]); 
 
    } 
 
}

関連する問題