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"));
添加回答
举报