Start · Sprachen · JavaScript · Referenz · Array.prototype.flat()

Array.prototype.flat()

Methode

Die <code>flat()</code>-Methode erstellt ein neues Array, in dem alle Sub-Array-Elemente rekursiv bis zur angegebenen Tiefe zusammengeführt werden.

Kategorie: method-property

Signatur

flat() / flat(depth)

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

Typ
Array
Beschreibung
Ein neues Array, in das die Sub-Array-Elemente konkateniert wurden.

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 ]