2017-09-20 27 views
1
var numbers = [5, 3, 8, 6, 9, 1, 0, 2, 2]; 
var oddEvenCounts = numbers.reduce(function(counts, number) { 
    if (isOdd(number)) { 
    counts[odd]++; 
    } else { 
    counts[even]++; 
    } 
}, {}); 

我正在尋找這一點的代碼中的錯誤(仍然學習減少方法;)) - 我哪裏錯了?Javascript減少方法創建累加器對象

+0

什麼值存儲在變量'even'和'odd'? – Thomas

回答

5

工作代碼註釋:

var numbers = [5, 3, 8, 6, 9, 1, 0, 2, 2]; 
 

 
function isOdd(n) { 
 
    return !!(n % 2); 
 
} 
 

 
var oddEvenCounts = numbers.reduce(function(counts, number) { 
 
    if (isOdd(number)) { 
 
    counts.odd++; // use dot notation or ['odd'] 
 
    } else { 
 
    counts.even++; // use dot notation or ['even'] 
 
    } 
 
    
 
    return counts; // return the accumulator 
 
}, { odd: 0, even: 0 }); // set the initial values of odd and even 
 

 
console.log(oddEvenCounts);

可以縮短代碼位使用括號符號和三元運算符:

var numbers = [5, 3, 8, 6, 9, 1, 0, 2, 2]; 
 

 
function isOdd(n) { 
 
    return !!(n % 2); 
 
} 
 

 
var oddEvenCounts = numbers.reduce(function(counts, number) { 
 
    counts[isOdd(number) ? 'odd' : 'even']++; 
 
    
 
    return counts; 
 
}, { odd: 0, even: 0 }); 
 

 
console.log(oddEvenCounts);

+0

謝謝你,超級有用:我看到我做了什麼 - 沒有返回聲明,我沒有設置計數對象開始,也沒有正確調用它 –

+0

@marie_antoinette - 歡迎:) –

0

返回你的蓄電池:

var numbers = [5, 3, 8, 6, 9, 1, 0, 2, 2]; 
var oddEvenCounts = numbers.reduce(function(counts, number) { 
    if (isOdd(number)) { 
    counts[odd]++; 
    } else { 
    counts[even]++; 
    } 
    return counts; 
}, {});