Signatur
Beschreibung
Die flat()-Methode von Array-Instanzen erstellt ein neues Array, in das alle Sub-Array-Elemente rekursiv bis zur angegebenen Tiefe zusammengeführt (konkateniert) werden.
Die flat()-Methode ist eine kopierende Methode. Sie verändert this nicht, sondern gibt eine flache Kopie (shallow copy) zurück, die dieselben Elemente wie das ursprüngliche Array enthält.
Die flat()-Methode entfernt leere Slots, wenn das zu verflachende Array sparse (dünn besetzt) ist. Ist depth beispielsweise 1, werden sowohl leere Slots im Wurzel-Array als auch in der ersten Ebene verschachtelter Arrays ignoriert, während leere Slots in tiefer verschachtelten Arrays zusammen mit diesen Arrays selbst erhalten bleiben.
Die flat()-Methode ist generisch. Sie erwartet vom this-Wert lediglich eine length-Eigenschaft und Eigenschaften mit ganzzahligen Schlüsseln. Die Elemente müssen jedoch Arrays sein, damit sie verflacht werden können.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $depth | number | 1 | Die Tiefenstufe, die angibt, wie tief eine verschachtelte Array-Struktur verflacht werden soll. Standardwert ist 1. |
Rückgabewert
Beispiele
Verschachtelte Arrays verflachen
const arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
const arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
const arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
const arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
flat() auf sparse Arrays anwenden
const arr5 = [1, 2, , 4, 5];
console.log(arr5.flat()); // [1, 2, 4, 5]
const array = [1, , 3, ["a", , "c"]];
console.log(array.flat()); // [ 1, 3, "a", "c" ]
const array2 = [1, , 3, undefined, ["a", , ["d", , "e"]], null];
console.log(array2.flat()); // [ 1, 3, undefined, "a", ["d", empty, "e"], null ]
console.log(array2.flat(2)); // [ 1, 3, undefined, "a", "d", "e", null ]
flat() auf Nicht-Array-Objekten aufrufen
const arrayLike = {
length: 3,
0: [1, 2],
// Array-ähnliche Objekte werden nicht verflacht
1: { length: 2, 0: 3, 1: 4 },
2: 5,
3: 3, // wird von flat() ignoriert, da length 3 ist
};
console.log(Array.prototype.flat.call(arrayLike));
// [ 1, 2, { '0': 3, '1': 4, length: 2 }, 5 ]