4 回答

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個贊
reduce 的第一個參數(shù)是累加器。因此,將值添加到其中。所以它基本上是一個變量。
function maximumScore(tileHand) { return tileHand.reduce((p,c) => p + c.score, 0); }
這將繼續(xù)向 p 添加分?jǐn)?shù),從 0 開始

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個贊
原因是.reduce()
您使用的方法的回調(diào)最多需要 4 個參數(shù),第一個是accumulator。這意味著它保存了回調(diào)返回的所有先前結(jié)果的累加值。在這種情況下,它是一個數(shù)字,而不是一個對象。因此,在每次迭代中,您在參數(shù)下都有當(dāng)前總和p
,而不是對象。
從文檔:
accumulator
累加器累加回調(diào)的返回值。它是先前在回調(diào)的最后一次調(diào)用中返回的累積值——或者
initialValue
,如果它被提供(見下文)。

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超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

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個贊
p 代表前一個(或累加器/總和),c 代表當(dāng)前。您正在將以前的分?jǐn)?shù)與當(dāng)前分?jǐn)?shù)相加。然后告訴 reduce 函數(shù)從 0 開始
所以它試圖求和 0.score + c.score 這將給出 NaN。
只需做 p + c.score
所以循環(huán)將是
0 + 1 = 1
1 + 5 = 6
6 + 10 = 16
ETC
添加回答
舉報