喵喵時光機
2023-02-24 17:39:30
我對 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
提交
取消