0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Несколько месяцев назад в ECMAScript появились два новых метода для работы с массивами: Array.prototype.flat() и Array.prototype.flatMap(). В справочнике MDN на русском языке они отмечены как экспериментальные, а в англоязычной версии справочника предупреждения об особом статусе нет. Давайте посмотрим на .flat() и .flatMap() поближе.</p>
1
<p>Несколько месяцев назад в ECMAScript появились два новых метода для работы с массивами: Array.prototype.flat() и Array.prototype.flatMap(). В справочнике MDN на русском языке они отмечены как экспериментальные, а в англоязычной версии справочника предупреждения об особом статусе нет. Давайте посмотрим на .flat() и .flatMap() поближе.</p>
2
<h2>Содержание</h2>
2
<h2>Содержание</h2>
3
<ul><li><a>Метод Array.prototype.flat()</a></li>
3
<ul><li><a>Метод Array.prototype.flat()</a></li>
4
<li><a>Метод Array.prototype.flatMap()</a></li>
4
<li><a>Метод Array.prototype.flatMap()</a></li>
5
</ul><h2>Метод Array.prototype.flat()</h2>
5
</ul><h2>Метод Array.prototype.flat()</h2>
6
<p>Метод Array.prototype.flat() позволяет работать с вложенными массивами. Обратите внимание на код.</p>
6
<p>Метод Array.prototype.flat() позволяет работать с вложенными массивами. Обратите внимание на код.</p>
7
<p>Здесь есть массив array, в который вложен ещё один массив, в котором в свою очередь находится ещё один массив.</p>
7
<p>Здесь есть массив array, в который вложен ещё один массив, в котором в свою очередь находится ещё один массив.</p>
8
<p>Метод Array.prototype.flat() достаёт вложенные массивы и переносит их на уровень, который определяет разработчик. Дефолтный уровень - 1.</p>
8
<p>Метод Array.prototype.flat() достаёт вложенные массивы и переносит их на уровень, который определяет разработчик. Дефолтный уровень - 1.</p>
9
<p>Если глубина вложенности неизвестна, достать вложенные массивы можно с помощью аргумента Infinity. В этом случае метод<a>рекурсивно</a>обходит массив и достает все вложенные элементы независимо от глубины.</p>
9
<p>Если глубина вложенности неизвестна, достать вложенные массивы можно с помощью аргумента Infinity. В этом случае метод<a>рекурсивно</a>обходит массив и достает все вложенные элементы независимо от глубины.</p>
10
<h2>Метод Array.prototype.flatMap()</h2>
10
<h2>Метод Array.prototype.flatMap()</h2>
11
<p>В качестве примера рассмотрим функцию duplicate, которая принимает значение и возвращает массив из двух элементов, каждый из которых повторяет значение. Если применить функцию duplicate к массиву, получим вложенный массив.</p>
11
<p>В качестве примера рассмотрим функцию duplicate, которая принимает значение и возвращает массив из двух элементов, каждый из которых повторяет значение. Если применить функцию duplicate к массиву, получим вложенный массив.</p>
12
<p>Извлечь вложенные массивы можно с помощью flat.</p>
12
<p>Извлечь вложенные массивы можно с помощью flat.</p>
13
<p>В функциональном программировании подобные операции с массивами встречаются часто. Поэтому в ECMAScript появился метод .flatMap(), который упрощает код.</p>
13
<p>В функциональном программировании подобные операции с массивами встречаются часто. Поэтому в ECMAScript появился метод .flatMap(), который упрощает код.</p>
14
<p>Использовать .flatMap() для преобразования массива эффективнее, чем последовательно использовать .flat() и .map(). Поддержку методов Array.prototype.flat() и Array.prototype.flatMap() в браузерах можно проверить<a>по ссылке</a>.</p>
14
<p>Использовать .flatMap() для преобразования массива эффективнее, чем последовательно использовать .flat() и .map(). Поддержку методов Array.prototype.flat() и Array.prototype.flatMap() в браузерах можно проверить<a>по ссылке</a>.</p>
15
<p><em>Это перевод<a>заметки</a>Mathias Bynens.</em></p>
15
<p><em>Это перевод<a>заметки</a>Mathias Bynens.</em></p>