2016-10-28 69 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

爲什麼每次都添加數組的長度?如果要計算奇數或偶數的元素數,則每次添加一個元素,如果每次都要添加值本身,則執行arr [i]。 – DibsyJr

+0

每次找到號碼時,不要加上長度(如此10)的長度嗎?你只需要在每次找到一個時加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);