HTML: Markup language
CSS: Styling language
JavaScript: Scripting language
Web APIs: Programming interfaces
All web technology
Learn web development
Discover our tools
Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
View in English Always switch to English
This feature is well established and works across many devices and browser versions. It’s been available across browsers since январь 2020 г..
Метод flatMap() сначала применяет функцию к каждому элементу, а затем преобразует полученный результат в плоскую структуру и помещает в новый массив. Это идентично map функции, с последующим применением функции flat с параметром depth ( глубина ) равным 1, но flatMap часто бывает полезным, так как работает немного более эффективно.
flatMap()
flatMap
var new_array = arr.flatMap(function callback(currentValue[, index[, array]]) { // возвращает элемент для new_array }[, thisArg])
callback
Функция которая производит элементы нового массива, принимает три аргумента:
currentValue
Текущий обрабатываемый элемент массива.
index
Индекс обрабатываемого элемента в массиве.
array
Массив по которому осуществляется обход.
thisArg
Значение используемое в качестве this при вызове функции callback.
this
Новый массив, каждый элемент которого является результатом выполнения функции callback и "поднят" на уровень 1.
Смотрите Array.prototype.map() для детального описания callback функции. Метод flatMap идентичен методу map с последующим вызовом flat с параметром depth 1.
Array.prototype.map()
map
flat
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 является более эффективным.
Давайте сгенерируем список слов из списка предложений.
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
concat
var arr1 = [1, 2, 3, 4]; arr1.flatMap((x) => [x * 2]); // is equivalent to arr1.reduce((acc, x) => acc.concat([x * 2]), []); // [2, 4, 6, 8]
Enable JavaScript to view this browser compatibility table.
Array.prototype.flat()
Array.prototype.reduce()
Array.prototype.concat()