Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как сделать вложенный массив плоским

Короткий ответ

flat() поднимает элементы вложенных массивов на один уровень:

console.log([[1, 2], [3, 4], [5]].flat());

Результат:

[
  1,
  2,
  3,
  4,
  5
]

Любая глубина

Аргумент задаёт глубину. Infinity раскрывает всё:

const nested = [1, [2, [3, [4]]]];
 
console.log(nested.flat().length);
console.log(nested.flat(Infinity).join(', '));

Результат:

3
1, 2, 3, 4

map и flat сразу

flatMap() превращает каждый элемент в массив и объединяет результаты:

const orders = [
  { items: ['tea', 'cake'] },
  { items: ['coffee'] },
];
 
console.log(orders.flatMap((order) => order.items).join(', '));

Результат:

tea, cake, coffee

Частая ошибка

flat() без аргумента раскрывает только один уровень:

console.log(JSON.stringify([1, [2, [3]]].flat()));

Результат:

[1,2,[3]]

Функции из этого ответа

  • Array.prototype.flat — Раскрывает вложенные массивы в один.
  • Array.prototype.flatMap — Применяет функцию к каждому элементу и раскрывает результат на один уровень.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.