Array.prototype.flat()
Базовая линия Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с января 2020 года.
Метод flat() экземпляров Array создает новый массив, в который рекурсивно объединены все элементы подмассивов до указанной глубины.
Попробуйте
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]
Синтаксис
flat() flat(depth)
Параметры
-
depthНеобязательный - Уровень глубины, определяющий, насколько глубоко должна быть выровнена вложенная структура массива. По умолчанию — 1.
Возвращаемое значение
Новый массив, в который объединены элементы подмассивов.
Описание
Метод flat() является методом копирования. Он не изменяет this, а вместо этого возвращает поверхностную копию, которая содержит те же элементы, что и исходный массив.
Метод flat() удаляет пустые слоты, если выравниваемый массив является разреженным. Например, если depth равен 1, то игнорируются как пустые слоты в корневом массиве, так и в первом уровне вложенных массивов, но пустые слоты в более глубоко вложенных массивах сохраняются вместе с самими массивами.
Метод flat() является обобщенным. Он ожидает, что значение this имеет только свойство length и свойства с целочисленными ключами. Однако его элементы должны быть массивами, если их нужно выравнивать.
Примеры
Выравнивание вложенных массивов
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() с разреженными массивами
Метод flat() удаляет пустые слоты в массивах:
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() для объектов, не являющихся массивами
Метод flat() считывает свойство length объекта this, а затем обращается к каждому свойству, ключ которого является неотрицательным целым числом меньше length. Если элемент не является массивом, он напрямую добавляется к результату. Если элемент является массивом, он выравнивается в соответствии с параметром depth.
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 ]
Спецификации
Совместимость с браузерами
| Настольные | Мобильные | Серверные | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
flat |
69 |
79 |
62 |
56 |
12 |
69 |
62 |
48 |
12 |
10.0 |
69 |
12 |
1.0.0 |
1.0 |
11.0.0 |
См. также
- Полифил
Array.prototype.flatвcore-js - Полифил es-shims для
Array.prototype.flat - Руководство по индексированным коллекциям
ArrayArray.prototype.concat()Array.prototype.flatMap()Array.prototype.map()Array.prototype.reduce()
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat