如何使用reduce来返回Javascript中的对象?
问题描述:
我想通过使用Array.reduce()方法来统计数组中的奇数和偶数。当我运行下面的代码时,出现“奇数未定义”的错误。我如何定义奇数以获得此代码的工作?如何使用reduce来返回Javascript中的对象?
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);
使用'counts.odd'和'counts.even'代替'计数[....]'或'甚至计数[ “奇数”]'和'计数[”甚至“]' – Titus
钥匙必须是字符串... – Li357