我不太了解.reduce()方法
我尝试过修改一下代码,我可以看到在第一种情况下,累加器会增加,但在随后的迭代中会变为“未定义”和“ NaN”。不知道为什么在val.voted === true时该值不累积。
srcdoc
结果应为7。
答案 0 :(得分:4)
您的回调函数必须在下一次迭代期间为累加器返回一个值。当前,您没有 ≢'abcdef'
6
≢2 3⍴'abcdef'
2
≢42
1
≢⍬
0
,因此执行会失败并在第一次调用时返回return
。要解决此问题,只需添加undefined
:
return
或者,您可以删除括号,因为您使用的是胖箭头语法:
function totalVotes(arr) {
return arr.reduce((acc, val) => { return val.voted === true ? acc+=1 : acc;}, 0);
}
答案 1 :(得分:1)
您需要一个带有块语句的return语句。
一种较短的方法是仅添加布尔值。
function totalVotes(arr) {
return arr.reduce((sum, { voted }) => sum + voted, 0);
}
var voters = [{ name: 'Bob', age: 30, voted: true }, { name: 'Jake', age: 32, voted: true }, { name: 'Kate', age: 25, voted: false }, { name: 'Sam', age: 20, voted: false }, { name: 'Phil', age: 21, voted: true }, { name: 'Ed', age: 55, voted: true }, { name: 'Tami', age: 54, voted: true }, { name: 'Mary', age: 31, voted: false }, { name: 'Becky', age: 43, voted: false }, { name: 'Joey', age: 41, voted: true }, { name: 'Jeff', age: 30, voted: true }, { name: 'Zack', age: 19, voted: false }];
console.log(totalVotes(voters)); // 7