3 回答

TA貢獻1820條經驗 獲得超2個贊
您使用的方法不Array.reduce
正確,回調的第一個參數是部分結果或累加器。
在Array.reduce
需要回調函數需要4點以上的參數,你的情況,你所需要的前兩個。
該reduce
函數的語法為reduce(callback[, initialValue])
:
callback函數,對數組中的每個元素執行,帶有四個參數:
累加器累加回調的返回值;它是先前在回調的上一次調用中返回的累計值,或者如果提供的話,則返回initialValue(請參見下文)。
currentValue數組中正在處理的當前元素。**
initialValue可選用作首次調用回調的第一個參數的值。如果未提供初始值,則將使用數組中的第一個元素。在沒有初始值的空數組上調用reduce()是錯誤的。
要找到總和,請傳遞初始值0,然后向其添加數組中的后續元素:
function codepoints(string) {
return string.split('').reduce( (acc,next) => acc + next.charCodeAt(0), 0)
}
console.log(codepoints("abc"));

TA貢獻1873條經驗 獲得超9個贊
當您不指定initialValue whel調用時,Array.reduce
則:
accumulator
將在第一次迭代中包含第一個數組元素accumulator
將包含后續迭代中的累積值
在您的示例中,您可以檢查累加器變量并相應地求和:
function codepoints(string) {
return string
.split("")
.reduce((acc, next) => (typeof acc === "string" ? acc.charCodeAt(0) : acc) + next.charCodeAt(0))
}
console.log(codepoints("abc"));
添加回答
舉報