P粉9094764572023-08-19 12:39:09
您有两个问题,第一个问题是您的updateDirectHelper
函数没有返回任何内容。虽然在这个函数中有一个return
语句,但实际上它是嵌套在reduce
的回调函数(updateClause, [key, value]) => {
中,而不是updateDictHelper
本身。
您的另一个问题是如何为acc
提供默认值。Reduce原生支持可选的第二个参数,该参数将作为acc
的初始值。
reduce(callbackFn, initialValue)
最好的做法是尽可能提供一个初始值。如果您不包含它,.reduce()
将跳过回调的第一个调用,并从将acc
设置为数组中的第一个值开始调用回调函数,并将第二个参数设置为数组中的第二个值。如果您的数组只有一个值,例如在您的情况下,那么这个单个值就是从.reduce()
调用中返回的值,并且您的.reduce()
的回调函数将永远不会被调用:
const arrayWithOneElement = [1]; const res = arrayWithOneElement.reduce(() => { console.log("I never run"); }); // 注意没有第二个参数 console.log(res);