Baseline Widely 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
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
and 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]
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9]
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами См Ñак жеRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4