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 mit allen Unter-Array-Elementen, die bis zur angegebenen Tiefe rekursiv hineinkonkateniert 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 Ebenentiefe, die angibt, wie tief eine verschachtelte Array-Struktur abgeflacht werden soll. Standard ist 1.
Rückgabewert
Ein neues Array mit den verketteten Unter-Array-Elementen.
Beschreibung
Die flat()
Methode ist eine kopierende Methode. Sie verändert nicht this
, 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 entfaltende Array lückig ist. Zum Beispiel, wenn depth
1 ist, werden sowohl leere Plätze im Wurzelarray als auch in der ersten Ebene der verschachtelten Arrays ignoriert, aber leere Plätze in weiter verschachtelten Arrays werden mit den Arrays selbst beibehalten.
Die flat()
Methode ist generisch. Sie erwartet nur, dass der this
Wert eine length
Eigenschaft und Integer-Index-Eigenschaften hat. Allerdings müssen seine Elemente Arrays sein, wenn sie abgeflacht werden sollen.
Beispiele
Verschachtelte Arrays abflachen
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() auf lückigen Arrays
Die flat()
Methode entfernt leere Slots 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() auf Nicht-Array-Objekten
Die flat()
Methode liest die length
Eigenschaft von this
und greift anschließend auf jede Eigenschaft zu, deren Schlüssel ein nicht-negativer Integer kleiner als length
ist. Wenn das Element kein Array ist, wird es direkt dem Ergebnis hinzugefügt. Wenn das Element ein Array ist, wird es gemäß 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
BCD tables only load in the browser