2016-03-18 15 views
1

現在、配列の奇数と負数を数えたり集計するために複数の引数をとるJS関数を記述しようとしています。関数は実際に引数を取るため、配列を引用符で囲みます。配列の奇数と負数をカウントするJS関数

私はオッズとネガティブを得るためにforループを使いたいが、私のコードは動かない。

function arrayAnalyzer() { 

var myArray = Array.prototype.slice.call(arguments) 

var counter = { 
    odds : 0, 
    negatives : 0, 
    avg : 0, 
    median : 0 
} 

    for(var i = 0; i < myArray.length; i++) { 

    if(myArray{i] % 2 === 1) { 
     counter.odds++ } 

    if(myArray[i] < 0) { 
     counter.negatives++ } 
    } 

return counter 
} 

arrayAnalyzer(7, -3, 0, 12, 44, -5, 3); 

私はこのコードが動作することをオンラインで見つけましたが、可能であればfor-loopを使用したいと思います。

myArray.forEach(function(num){ 
    if (Math.abs(num) % 2 === 1) counter.odds++ 
    if (num < 0) counter.negatives++ 
}) 
+3

'myarrayの{i]は'にタイプミスがあり...また、 'myArray'にデータが設定されていますか? –

+1

追加するだけで、 'forEach'ループは' for'ループではない負の奇数も考慮します。 – BeardFist

+0

何かが見つからない限り、コードは 'myArray {i}'の入力ミスを修正した後に動作するようです。考えられる1つの問題:負の奇数はカウントされません。 –

答えて

0

文の場合は、あなたの最初のわずかな構文の修正で動作しているようだ:

JSBIN作業
function arrayAnalyzer() { 

var myArray = Array.prototype.slice.call(arguments) 

var counter = { 
    odds : 0, 
    negatives : 0, 
    avg : 0, 
    median : 0 
} 

    for(var i = 0; i < myArray.length; i++) { 

    if(myArray[i] % 2 === 1) { 
     counter.odds++ } 

    if(myArray[i] < 0) { 
     counter.negatives++ } 
    } 

return counter 
} 

https://jsbin.com/yokawu/edit?js,console