簡體   English   中英

如何使用reduce在Javascript中返回一個object?

[英]How to use reduce to return an object in Javascript?

我正在嘗試使用 Array.reduce() 方法計算數組中奇數和偶數的數量。 當我運行下面的代碼時,出現錯誤“未定義奇數”。 我如何/在何處定義 odd 以使此代碼起作用?

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

好吧,奇數沒有定義。 您應該做的是在引號( counts['odd'] )中使用奇數/偶數,或者使用點符號( counts.odd )。

另外,由於未定義奇數和偶數,因此遞增它們將導致NaN 初始值應改為{ odd: 0, even: 0 }

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

此功能可以為您完成此任務。

 function oddEvenCounts(arr) { const counts = { even: 0, odd: 0 }; arr.forEach(n => { if(n % 2 === 0) { counts.even++; } else { counts.odd++ } }); return counts; } const array = [5, 3, 8, 6, 9, 1, 0, 2, 2]; console.log(oddEvenCounts(array)); 

使用 ES6+ 回答

const sumEvenOdd = (numbersArray) => {
    return numbersArray.reduce((acc, current) => current % 2 === 0 ? {...acc,'even':acc['even'] + current} : {...acc, 'odd':acc['odd'] + current}, {"even":0, "odd":0})
}'

console.log(sumEvenOdd([1, 6, 8, 5, 3]));
// Expected results: {even: 14, odd: 9}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM