我試圖使用Concat的減少數組的數組,我想,我可以使用Array.prototype.concat功能是這樣的:使用原型功能高階函數在JavaScript
arr = [[1],[2],[3]]
arr.reduce((a, b) => Array.prototype.concat(a, b), [])
其中一期工程罰款,並給我陣列[1, 2, 3]
。後來我想我可能會更聰明,像這樣做:
arr = [[1],[2],[3]]
arr.reduce(Array.prototype.concat, [])
然而,這給了我一個錯誤:
TypeError: Array.prototype.concat called on null or undefined
at Array.reduce (native)
at Object.<anonymous> (/home/axel/Developer/temp/reduce2.js:2:5)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.runMain (module.js:590:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
它似乎認爲Array.prototype.concat
是undefined
。爲什麼是這樣?
您必須將參數傳遞到'reduce'函數,並將其轉換爲'concat'並返回一些內容,因爲此時您的'reduce'函數不返回任何內容。 –
請注意,您的初始代碼中的第二行應該實際讀取'arr = arr.reduce((a,b)=> a.concat(b));'這使得進一步減少成爲不可能。 –
@Kinduser該函數確實會返回一些內容。箭頭函數只允許單個表達式作爲它們的主體,並將該表達式的結果用作它們的返回值。 – apsillers