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);