[英]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.