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
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
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:
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.
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 GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
flat |
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support