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, ["a", , ["d", , "e"]]];
console.log(array2.flat()); // [ 1, 3, "a", ["d", порожньо, "e"] ]
console.log(array2.flat(2)); // [ 1, 3, "a", "d", "e"]

Виклик 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
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet Deno Node.js
flat
Chrome Full support 69
Edge Full support 79
Firefox Full support 62
Internet Explorer No support No
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

Дивіться також