Array.prototype.flat()
Метод flat()
(площина, плоский) примірників Array
створює новий масив шляхом рекурсивного зчеплення, до заданої глибини, всіх підмасивів докупи.
Спробуйте його в дії
Синтаксис
flat()
flat(depth)
Параметри
depth
Необов'язковеРівень глибини, що задає те, наскільки глибоко вкладена структура підмасивів повинна бути сплощена. Усталено – 1.
Повернене значення
Новий масив, у котрий зчеплено елементи підмасивів.
Опис
Метод flat()
– копіювальний метод. Він не змінює this
, а повертає поверхневу копію, що містить ті самі елементи, що присутні у вихідному масиві.
Метод flat()
вилучає порожні комірки, якщо сплощуваний масив є розрідженим. Наприклад, якщо depth
– 1, то порожні комірки, як в кореневому масиві, так і в масивах першого рівня вкладеності – ігноруються, але порожні комірки в масивах глибших рівнів зберігаються вкупі з самими цими масивами.
Метод pop()
є узагальненим. Він лишень очікує, що значення 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", порожньо, "e"], null ]
console.log(array2.flat(2)); // [ 1, 3, undefined, "a", "d", "e", null ]
Виклик flat() на об'єктах-немасивах
Метод flat()
зчитує з this
властивість length
, а тоді звертається до кожної властивості, чий ключ – невід'ємне ціле число, менше за length
. Якщо елемент не є масивом, то він безпосередньо додається в кінець результату. Якщо елемент є масивом, то він сплощується згідно з параметром depth
.
const arrayLike = {
length: 3,
0: [1, 2],
// Масивоподібні об'єкти не сплощуються
1: { length: 2, 0: 3, 1: 4 },
2: 5,
3: 3, // ігнорується flat(), оскільки length – 3
};
console.log(Array.prototype.flat.call(arrayLike));
// [ 1, 2, { '0': 3, '1': 4, length: 2 }, 5 ]
Специфікації
Сумісність із браузерами
desktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
flat
|
Chrome Full support 69 | Edge Full support 79 | Firefox Full support 62 | Internet Explorer No support Ні | Opera Full support 56 | Safari Full support 12 | WebView Android Full support 69 | Chrome Android Full support 69 | Firefox for Android Full support 62 | Opera Android Full support 48 | Safari on iOS Full support 12 | Samsung Internet Full support 10.0 | Deno Full support 1.0 | Node.js Full support 11.0.0 |