我正在尝试使用Array.reduce()方法计算数组中奇数和偶数的数量。当我运行下面的代码时,我得到错误“奇怪未定义”。如何/在哪里定义奇数以使此代码有效?
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;
}, {});
答案 0 :(得分:6)
好吧,奇怪的是没有定义。你应该做的是将奇数/偶数放在引号(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);

答案 1 :(得分:1)
这是可以为您完成的功能。
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));