Array.prototype.flat()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

Die flat()-Methode von Array-Instanzen erstellt ein neues Array, in dem alle Unter-Array-Elemente bis zur angegebenen Tiefe rekursiv zusammengeführt werden.

Probieren Sie es aus

const arr1 = [0, 1, 2, [3, 4]];

console.log(arr1.flat());
// expected output: Array [0, 1, 2, 3, 4]

const arr2 = [0, 1, [2, [3, [4, 5]]]];

console.log(arr2.flat());
// expected output: Array [0, 1, 2, Array [3, Array [4, 5]]]

console.log(arr2.flat(2));
// expected output: Array [0, 1, 2, 3, Array [4, 5]]

console.log(arr2.flat(Infinity));
// expected output: Array [0, 1, 2, 3, 4, 5]

Syntax

js
flat()
flat(depth)

Parameter

depth Optional

Die Tiefenstufe, die angibt, wie tief eine verschachtelte Array-Struktur abgeflacht werden soll. Standard ist 1.

Rückgabewert

Ein neues Array mit den zusammengeführten Unter-Array-Elementen.

Beschreibung

Die flat()-Methode ist eine kopierende Methode. Sie verändert this nicht, sondern gibt eine flache Kopie zurück, die dieselben Elemente wie das ursprüngliche Array enthält.

Die flat()-Methode entfernt leere Plätze, wenn das zu transformierende Array dünn besetzt ist. Wenn zum Beispiel depth auf 1 gesetzt ist, werden sowohl leere Plätze im ursprünglichen Array als auch in der ersten Ebene der verschachtelten Arrays ignoriert, aber leere Plätze in tieferen verschachtelten Arrays bleiben zusammen mit den Arrays selbst erhalten.

Die flat()-Methode ist generisch. Sie erwartet nur, dass der this-Wert über eine length-Eigenschaft und ganzzahlige Schlüssel-Eigenschaften verfügt. Allerdings müssen die Elemente Arrays sein, wenn sie abgeflacht werden sollen.

Beispiele

Abflachen verschachtelter Arrays

js
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]

Verwendung von flat() mit dünn besetzten Arrays

Die flat()-Methode entfernt leere Plätze in Arrays:

js
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 ]

Aufrufen von flat() für Objekte, die keine Arrays sind

Die flat()-Methode liest die length-Eigenschaft von this und greift dann auf jede Eigenschaft zu, deren Schlüssel eine nicht-negative Ganzzahl unterhalb von length ist. Wenn das Element kein Array ist, wird es direkt dem Ergebnis hinzugefügt. Wenn das Element ein Array ist, wird es entsprechend dem depth-Parameter abgeflacht.

js
const arrayLike = {
  length: 3,
  0: [1, 2],
  // Array-like objects aren't flattened
  1: { length: 2, 0: 3, 1: 4 },
  2: 5,
  3: 3, // ignored by flat() since length is 3
};
console.log(Array.prototype.flat.call(arrayLike));
// [ 1, 2, { '0': 3, '1': 4, length: 2 }, 5 ]

Spezifikationen

Specification
ECMAScript® 2025 Language Specification
# sec-array.prototype.flat

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
flat

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch