我对 javascript 比较陌生,并试图对以下数组中的所有分数求和:[ { tile: "N", score: 1 }, { tile: "K", score: 5 }, { tile: "Z", score: 10 }, { tile: "X", score: 8 }, { tile: "D", score: 2 }, { tile: "A", score: 1 }, { tile: "E", score: 1 }]我试过使用这个功能:function maximumScore(tileHand) { return tileHand.reduce((p,c) => p.score + c.score, 0); }但我得到的结果不是NaN28。但是,当我用 替换p.score我的函数时p,我得到了 28 的预期结果。为什么会这样?
4 回答
繁花不似锦
TA贡献1851条经验 获得超4个赞
reduce 的第一个参数是累加器。因此,将值添加到其中。所以它基本上是一个变量。
function maximumScore(tileHand) { return tileHand.reduce((p,c) => p + c.score, 0); }
这将继续向 p 添加分数,从 0 开始
海绵宝宝撒
TA贡献1809条经验 获得超8个赞
// get sum of score prop across all objects in array i.e. tileHand
var scoreTotal = tileHand.reduce(function(prev, cur) {
return prev + cur. score;
}, 0);
console.log('Total Score:', scoreTotal);
参考:https://gist.github.com/benwells/0111163b3cccfad0804d994c70de7aa1
宝慕林4294392
TA贡献2021条经验 获得超8个赞
p 代表前一个(或累加器/总和),c 代表当前。您正在将以前的分数与当前分数相加。然后告诉 reduce 函数从 0 开始
所以它试图求和 0.score + c.score 这将给出 NaN。
只需做 p + c.score
所以循环将是
0 + 1 = 1
1 + 5 = 6
6 + 10 = 16
ETC
添加回答
举报
0/150
提交
取消