Array.prototype.flat()

Experimental: 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 flat() Methode erstellt rekursiv ein neues Array mit allen Elementen von Unterarrays bis zu einer spezifizierten Tiefe.

Syntax

var newArray = arr.flat(depth);

Parameter

depth Optional
Das Tiefenlevel, welches angibt, bis zu welcher Tiefe die Arraystruktur abgeflacht werden soll. Der Standardwert ist 1.

RĂŒckgabewert

Ein neues Array, welches die Elemente der Unterarrays enthÀlt.

Beispiele

Abflachen von geschachtelten Arrays

var arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]

var arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]

var arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]

Abflachen und Löcher in Arrays

Die flat Methode entfernt leere PlÀtze in Arrays:

var arr4 = [1, 2, , 4, 5];
arr4.flat();
// [1, 2, 4, 5]

Alternative

reduce und concat

var arr1 = [1, 2, [3, 4]];
arr1.flat();

// Um ein Array um eine Ebene zu glÀtten.
arr1.reduce((acc, val) => acc.concat(val), []);
// [1, 2, 3, 4]

// Um mehrere Ebenen zu glÀtten muss reduce und concat rekursiv eingesetzt werden.

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

function flattenDeep(arr1) {
   return arr1.reduce((acc, val) => Array.isArray(val) ? acc.concat(flattenDeep(val)) : acc.concat(val), []);
}
flattenDeep(arr1);

// [1, 2, 3, 1, 2, 3, 4, 2, 3, 4]

Spezifikationen

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

BrowserkompatibilitÀt

BCD tables only load in the browser

Siehe auch