Dies ist eine experimentelle Technologie
Da diese Technologie noch nicht definitiv implementiert wurde, sollte die Browserkompatibilität beachtet werden. Es ist auch möglich, dass die Syntax in einer späteren Spezifikation noch geändert wird.

Die flatMap() Methode bildet jedes Element über eine Funktion ab und flacht das Ergebnis in ein Array ab. Sie ist identisch zu einem map gefolgt von einem flat der Tiefe 1, aber flatMap ist oft nützlich und beide in einer Methode zusammenführen ist etwas effizienter.

Syntax

var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {
    // return element for new_array
}[, thisArg])

Parameter

callback
Funktion, die ein Element für das neue Array erzeugt, welche drei Argumente hat:
 
currentValue
Das aktuelle Element, das im Array verarbeitet wird.
indexOptional
Der Index des aktuell zu verarbeitende Elements in dem Array.
arrayOptional
Das Array, auf dem flatMap aufgerufen wurde.
thisArgOptional
Wert, der bei der Ausführung von callback für this genutzt wird.

Rückgabewert

Ein neues Array mit jedem Element, dass aus dem Resultat der callback Funktion hervorgeht und auf die Tiefe 1 abgeflacht wurde.

Beschreibung

Siehe auf der Seite Array.prototype.map() für eine detaillierte Beschreibung der callback Funktion. Die flatMap Methode ist identisch zu map gefolgt von flat mit der Tiefe 1.

Beispiele

map und flatMap

var arr1 = [1, 2, 3, 4];

arr1.map(x => [x * 2]); 
// [[2], [4], [6], [8]]

arr1.flatMap(x => [x * 2]);
// [2, 4, 6, 8]

// only one level is flattened
arr1.flatMap(x => [[x * 2]]);
// [[2], [4], [6], [8]]

Alternative

reduce und concat

var arr1 = [1, 2, 3, 4];

arr1.flatMap(x => [x * 2]);
// ist equivalent zu
arr1.reduce((acc, x) => acc.concat([x * 2]), []);
// [2, 4, 6, 8]
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Spezifikationen

Spezifikation Status Kommentar
Array.prototype.flatMap proposal Candidate (3)  

Browserkompatibilität

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid WebviewChrome für AndroidEdge MobileFirefox für AndroidOpera für AndroidiOS SafariSamsung InternetNode.js
Grundlegende Unterstützung
Experimentell
Chrome Vollständige Unterstützung 69Edge Keine Unterstützung NeinFirefox Vollständige Unterstützung 62IE Keine Unterstützung NeinOpera Vollständige Unterstützung 56Safari Vollständige Unterstützung 12WebView Android Vollständige Unterstützung 69Chrome Android Vollständige Unterstützung 69Edge Mobile Keine Unterstützung NeinFirefox Android Vollständige Unterstützung 62Opera Android Vollständige Unterstützung 56Safari iOS Vollständige Unterstützung 12Samsung Internet Android Keine Unterstützung Neinnodejs Keine Unterstützung Nein

Legende

Vollständige Unterstützung  
Vollständige Unterstützung
Keine Unterstützung  
Keine Unterstützung
Experimentell. Das Verhalten kann sich zukünftig ändern.
Experimentell. Das Verhalten kann sich zukünftig ändern.

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Mitwirkende an dieser Seite: schlagi123
Zuletzt aktualisiert von: schlagi123,