Array.prototype.flat
Das Array in diesem Beispiel ist mehrere Ebenen tief: Es enthält ein Array, das wiederum ein weiteres Array enthält.
const array = [1, [2, [3]]];
Array#flat
gibt eine reduzierte Version eines gegebenen Arrays zurück.
array.flat();
array.flat(1);
Die Standardtiefe ist 1
, aber Sie können jede Zahl übergeben, um rekursiv bis zu dieser Tiefe zu reduzieren. Um rekursiv zu reduzieren, bis das Ergebnis keine verschachtelten Arrays mehr enthält, geben wir Infinity
weiter.
Warum heißt diese Methode Array.prototype.flat
und nicht Array.prototype.flatten
? Lesen Sie unseren Bericht zu #SmooshGate, um es herauszufinden!
Array.prototype.flatMap
Hier ist ein weiteres Beispiel. Wir haben eine Funktion duplicate
, die einen Wert nimmt und ein Array zurückgibt, das diesen Wert zweimal enthält. Wenn wir duplicate
auf jeden Wert in einem Array anwenden, erhalten wir ein verschachteltes Array.
const duplicate = (x) => [x, x];
[2, 3, 4].map(duplicate);
Sie können dann flat
auf das Ergebnis aufrufen, um das Array zu reduzieren:
[2, 3, 4].map(duplicate).flat();
Da dieses Muster in der funktionalen Programmierung so häufig vorkommt, gibt es jetzt eine eigene Methode flatMap
dafür.
[2, 3, 4].flatMap(duplicate);
flatMap
ist ein wenig effizienter, als map
gefolgt von einem separaten flat
zu verwenden.
Interessiert an Anwendungsfällen für flatMap
? Schauen Sie sich Axel Rauschmayers Erklärung an.
Unterstützung für Array#{flat,flatMap}