Movatterモバイル変換


[0]ホーム

URL:


MDN Web Docs

Эта страница была переведена с английского языка силами сообщества. Вы тоже можете внести свой вклад, присоединившись к русскоязычному сообществу MDN Web Docs.

Array.prototype.flatMap()

BaselineWidely available

МетодflatMap() сначала применяет функцию к каждому элементу, а затем преобразует полученный результат в плоскую структуру и помещает в новый массив. Это идентичноmap функции, с последующим применением функцииflat с параметром depth ( глубина ) равным 1, ноflatMap часто бывает полезным, так как работает немного более эффективно.

Синтаксис

var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) {    // возвращает элемент для new_array}[, thisArg])

Параметры

callback

Функция которая производит элементы нового массива, принимает три аргумента:

currentValue

Текущий обрабатываемый элемент массива.

indexНеобязательный

Индекс обрабатываемого элемента в массиве.

arrayНеобязательный

Массив по которому осуществляется обход.

thisArgНеобязательный

Значение используемое в качествеthis при вызове функцииcallback.

Возвращаемое значение

Новый массив, каждый элемент которого является результатом выполнения функции callback и "поднят" на уровень 1.

Описание

СмотритеArray.prototype.map() для детального описания callback функции. МетодflatMap идентичен методуmap с последующим вызовомflat с параметром depth 1.

Примеры

map иflatMap

js
let arr1 = [1, 2, 3, 4];arr1.map((x) => [x * 2]);// [[2], [4], [6], [8]]arr1.flatMap((x) => [x * 2]);// [2, 4, 6, 8]// выравнивается только один уровеньarr1.flatMap((x) => [[x * 2]]);// [[2], [4], [6], [8]]

Хотя результат полученный в примере выше можно было получить используя просто map, ниже мы рассмотрим пример гдеflatMap является более эффективным.

Давайте сгенерируем список слов из списка предложений.

js
let arr1 = ["it's Sunny in", "", "California"];arr1.map((x) => x.split(" "));// [["it's","Sunny","in"],[""],["California"]]arr1.flatMap((x) => x.split(" "));// ["it's","Sunny","in", "", "California"]

Обратите внимание, длина списка вывода может отличаться от длины списка ввода.

//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Альтернативное решение

reduce andconcat

js
var arr1 = [1, 2, 3, 4];arr1.flatMap((x) => [x * 2]);// is equivalent toarr1.reduce((acc, x) => acc.concat([x * 2]), []);// [2, 4, 6, 8]

//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-array.prototype.flatmap

Совместимость с браузерами

См так же

Help improve MDN

Learn how to contribute.

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp