2016-10-28 5 views
-2

いくつかの番号を持つ配列を作成しました。 この配列には何個、何個の奇数があるか調べたいと思います。私はこのようにそれをプリントアウトする必要があります(これは単なる一例です)配列内の奇数と偶数はどれくらいですか

でも数:6

奇数番号:7

私はそれがオフになっているどのように多くのカウントアップループを作成する必要があり偶数および奇数。

これは私がこれまで

<script> 

window.onload = run; 

    var tall = [5,10,15,20,25,30,35,40,45,50]; 

    function run() { 

    tall = [5,10,15,20,25,30,35,40,45,50]; 

    liste(tall); 

    } 

    function liste(arr) { 

    var sumOdd = 0; // Odd 1, 3, 5 etc.. 
    var sumPar = 0; // Even 2, 4, 6 etc.. 

    for(var i = 0; i < arr.length; i++) { 
     if(arr[i] % 2 === 0) { 
     sumPar += arr.length; 
    } 
     else { 
     sumOdd += arr.length; 
     }           // Even numbers      // Odd numbers 
     document.getElementById("print").innerHTML = "Partall: " + sumPar + "<br />" + "Oddetall: " + sumOdd; 

    } 

    } 
} 
</script> 

ここで間違っている、と私は何を知らないその何かが持っているものです。

+0

'+ = arr.length'は意味がありません。あなたは単に '+ = 1'や' ++ 'を使いたいだけです。 – deceze

+0

なぜ、アレイの長さを毎回追加していますか?奇数または偶数の要素の数を数えたい場合は、毎回値1を追加します。そのときに値arr [i]を実行するたびに値を追加します。 – DibsyJr

+0

数字が見つかるたびに背の高い長さ(10)を追加しないでください。配列の長さではなく、1つを見つけるたびに1を加えるだけです。 – Lehue

答えて

2

あなたは配列の長さであるarr.lengthを追加しました。代わりに、あなたは単にあなたがArray#reduceで反復だけオッズを数えることができる数

var tall = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]; 
 

 
liste(tall); 
 

 
function liste(arr) { 
 
    var sumOdd = 0; 
 
    var sumPar = 0; 
 

 
    for (var i = 0; i < arr.length; i++) { 
 
    if (arr[i] % 2 === 0) { 
 
     sumPar++; 
 
    } else { 
 
     sumOdd++; 
 
    } 
 
    } 
 
    
 
    console.log("Odd : " + sumOdd); 
 
    console.log("Par : " + sumPar); 
 
}

+0

ありがとう、この作品perfeckt! – celllaa95

0

は、あなたはいつもsumPar += arr.length;の代わりにこれを試してみてください、あなたの変数

に、配列の完全な長さを追加します。

sumPar++; 
4

をインクリメントする必要があります。残りの部分については、配列の長さとオッズの差を取るだけです。

var tall = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50], 
 
    odd = tall.reduce(function (r, a) { return r + a % 2; }, 0), 
 
    even = tall.length - odd; 
 

 
console.log('odd', odd); 
 
console.log('even', even);

関連する問題