Ich versuche, ein Array von Arrays zu verketten reduzieren verwenden und ich dachte, dass ich die Array.prototype.concat Funktion wie diese verwenden:Mit Prototyp Funktionen in Funktionen höherer Ordnung in Javascript
arr = [[1],[2],[3]]
arr.reduce((a, b) => Array.prototype.concat(a, b), [])
Welche funktioniert gut und gibt mir das Array [1, 2, 3]
. Dann dachte ich, dass ich noch klüger sein könnte und tun es wie folgt aus:
arr = [[1],[2],[3]]
arr.reduce(Array.prototype.concat, [])
Dies jedoch ist mir ein Fehler:
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)
Es scheint zu denken, dass Array.prototype.concat
undefined
ist. Warum ist das?
Sie müssen die Argumente sowohl in die 'reduce'-Funktion als auch in 'concat' übergeben und etwas zurückgeben, da Ihre' reduce'-Funktion in diesem Moment nichts zurückgibt. –
Beachten Sie, dass die zweite Zeile in Ihrem ursprünglichen Code tatsächlich lesen sollte: arr = arr.reduce ((a, b) => a.concat (b)); was eine weitere Reduktion unmöglich macht. –
@Kinduser Die Funktion gibt etwas zurück. Pfeilfunktionen erlauben nur einen einzigen Ausdruck als ihren Körper und verwenden das Ergebnis dieses Ausdrucks als ihren Rückgabewert. – apsillers