Baseline Widely available
СводкаÐеÑод map()
ÑоздаÑÑ Ð½Ð¾Ð²Ñй маÑÑив Ñ ÑезÑлÑÑаÑом вÑзова Ñказанной ÑÑнкÑии Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа маÑÑива.
const new_array = arr.map(function callback( currentValue[, index[, array]]) { // ÐозвÑаÑÐ°ÐµÑ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð´Ð»Ñ new_array }[, thisArg])ÐаÑамеÑÑÑ
callback
ФÑнкÑиÑ, вÑзÑÐ²Ð°ÐµÐ¼Ð°Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа маÑÑива arr
. ÐаждÑй Ñаз, когда callback
вÑполнÑеÑÑÑ, возвÑаÑаемое знаÑение добавлÑеÑÑÑ Ð² new_array
.
ФÑнкÑÐ¸Ñ callback
, ÑоздаÑÑÐ°Ñ ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð² новом маÑÑиве, пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑи аÑгÑменÑа:
currentValue
ТекÑÑий обÑабаÑÑваемÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ Ð¼Ð°ÑÑива.
index
ÐеобÑзаÑелÑнÑй
ÐÐ½Ð´ÐµÐºÑ ÑекÑÑего обÑабаÑÑваемого ÑлеменÑа в маÑÑиве.
array
ÐеобÑзаÑелÑнÑй
ÐаÑÑив, по коÑоÑÐ¾Ð¼Ñ Ð¾ÑÑÑеÑÑвлÑеÑÑÑ Ð¿ÑÐ¾Ñ Ð¾Ð´.
thisArg
ÐеобÑзаÑелÑнÑй
ÐеобÑзаÑелÑнÑй паÑамеÑÑ. ÐнаÑение, иÑполÑзÑемое в каÑеÑÑве this
пÑи вÑзове ÑÑнкÑии callback
ÐовÑй маÑÑив, где каждÑй ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑвлÑеÑÑÑ ÑезÑлÑÑаÑом callback
ÑÑнкÑии.
ÐеÑод map
вÑзÑÐ²Ð°ÐµÑ Ð¿ÐµÑеданнÑÑ ÑÑнкÑÐ¸Ñ callback
один Ñаз Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ ÑлеменÑа, в поÑÑдке иÑ
поÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¸ конÑÑÑÑиÑÑÐµÑ Ð½Ð¾Ð²Ñй маÑÑив из ÑезÑлÑÑаÑов ÐµÑ Ð²Ñзова. ФÑнкÑÐ¸Ñ callback
вÑзÑваеÑÑÑ ÑолÑко Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑов маÑÑива, имеÑÑиÑ
пÑиÑвоеннÑе знаÑениÑ, вклÑÑÐ°Ñ undefined
. Ðна не вÑзÑваеÑÑÑ Ð´Ð»Ñ Ð¿ÑопÑÑеннÑÑ
ÑлеменÑов маÑÑива (Ñо еÑÑÑ Ð´Ð»Ñ Ð¸Ð½Ð´ÐµÐºÑов, коÑоÑÑе никогда не бÑли заданÑ, коÑоÑÑе бÑли ÑÐ´Ð°Ð»ÐµÐ½Ñ Ð¸Ð»Ð¸ коÑоÑÑм никогда не бÑло пÑиÑвоено знаÑение.
ФÑнкÑÐ¸Ñ callback
вÑзÑваеÑÑÑ Ñ ÑÑÐµÐ¼Ñ Ð°ÑгÑменÑами: знаÑением ÑлеменÑа, индекÑом ÑлеменÑа и маÑÑивом, по коÑоÑÐ¾Ð¼Ñ Ð¾ÑÑÑеÑÑвлÑеÑÑÑ Ð¿ÑоÑ
од.
ÐÑли в меÑод map
бÑл пеÑедан паÑамеÑÑ thisArg
, пÑи вÑзове callback
он бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð² каÑеÑÑве знаÑÐµÐ½Ð¸Ñ this
. РпÑоÑивном ÑлÑÑае в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ this
бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð·Ð½Ð°Ñение undefined
. РконеÑном иÑоге, знаÑение this
, наблÑдаемое из ÑÑнкÑии callback
, опÑеделÑеÑÑÑ ÑоглаÑно обÑÑнÑм пÑавилам опÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ this
, видимого из ÑÑнкÑии.
ÐеÑод map
не изменÑÐµÑ Ð¼Ð°ÑÑив, Ð´Ð»Ñ ÐºÐ¾ÑоÑого он бÑл вÑзван (Ñ
оÑÑ ÑÑнкÑÐ¸Ñ callback
Ð¼Ð¾Ð¶ÐµÑ ÑÑо делаÑÑ).
Ðиапазон ÑлеменÑов, обÑабаÑÑваемÑÑ
меÑодом map
, ÑÑÑанавливаеÑÑÑ Ð´Ð¾ пеÑвого вÑзова ÑÑнкÑии callback
. ÐлеменÑÑ, добавленнÑе в маÑÑив поÑле наÑала вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¼ÐµÑода map
, не бÑдÑÑ Ð¿Ð¾ÑеÑÐµÐ½Ñ ÑÑнкÑией callback
. ÐÑли ÑÑÑеÑÑвÑÑÑие ÑлеменÑÑ Ð¼Ð°ÑÑива изменÑÑÑÑÑ ÑÑнкÑией callback
, иÑ
знаÑениÑ, пеÑеданнÑе в ÑÑнкÑиÑ, бÑдÑÑ Ð·Ð½Ð°ÑениÑми на ÑÐ¾Ñ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð²Ñемени, когда меÑод map
поÑеÑÐ¸Ñ Ð¸Ñ
; ÑдалÑннÑе ÑлеменÑÑ Ð¿Ð¾ÑеÑÐµÐ½Ñ Ð½Ðµ бÑдÑÑ.
СледÑÑÑий код беÑÑÑ Ð¼Ð°ÑÑив ÑиÑел и ÑоздаÑÑ Ð½Ð¾Ð²Ñй маÑÑив, ÑодеÑжаÑий квадÑаÑнÑе коÑни ÑиÑел из пеÑвого маÑÑива.
const numbers = [1, 4, 9];
const roots = numbers.map(Math.sqrt);
// ÑепеÑÑ roots Ñавен [1, 2, 3], а numbers вÑÑ ÐµÑÑ Ñавен [1, 4, 9]
ÐÑимеÑ: оÑобÑажение маÑÑива ÑиÑел Ñ Ð¸ÑполÑзованием ÑÑнкÑии, ÑодеÑжаÑей аÑгÑменÑ
СледÑÑÑий код показÑваеÑ, как ÑабоÑÐ°ÐµÑ Ð¾ÑобÑажение, когда ÑÑнкÑÐ¸Ñ ÑÑебÑÐµÑ Ð¾Ð´Ð¸Ð½ аÑгÑменÑ. ÐÑгÑÐ¼ÐµÐ½Ñ Ð±ÑÐ´ÐµÑ Ð°Ð²ÑомаÑиÑеÑки пÑиÑваиваÑÑÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¼Ñ ÑлеменÑÑ Ð¼Ð°ÑÑива, когда map
пÑоÑ
Ð¾Ð´Ð¸Ñ Ð¿Ð¾ оÑигиналÑÐ½Ð¾Ð¼Ñ Ð¼Ð°ÑÑивÑ.
const numbers = [1, 4, 9];
const doubles = numbers.map((num) => num * 2);
// ÑепеÑÑ doubles Ñавен [2, 8, 18], а numbers вÑÑ ÐµÑÑ Ñавен [1, 4, 9]
ÐÑимеÑ: обобÑÑнное иÑполÑзование map
ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑ, как иÑполÑзоваÑÑ map
на обÑекÑе ÑÑÑоки String
Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð¼Ð°ÑÑива Ð±Ð°Ð¹Ñ Ð² кодиÑовке ASCII, пÑедÑÑавлÑÑÑего знаÑÐµÐ½Ð¸Ñ Ñимволов:
const map = Array.prototype.map;
const charCodes = map.call("Hello World", (x) => x.charCodeAt(0));
// ÑепеÑÑ charCodes Ñавен [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
ÐÑимеÑ: обобÑÑнное иÑполÑзование map
вмеÑÑе Ñ querySelectorAll
ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð¿Ð¾ÐºÐ°Ð·ÑваеÑ, как пÑойÑиÑÑ Ð¿Ð¾ коллекÑии обÑекÑов, ÑобÑаннÑÑ
Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ querySelectorAll
. Рданном ÑлÑÑае Ð¼Ñ Ð¿Ð¾Ð»ÑÑаем вÑе вÑбÑаннÑе опÑии на ÑкÑане и пеÑаÑаем иÑ
в конÑолÑ:
const elems = document.querySelectorAll("select option:checked");
const values = Array.prototype.map.call(elems, ({ value }) => value);
Ðолее пÑоÑÑÑм ÑпоÑобом бÑÐ´ÐµÑ Ð¸ÑполÑзование меÑода Array.from()
.
map
Ð´Ð»Ñ Ð¿ÐµÑевоÑаÑÐ¸Ð²Ð°Ð½Ð¸Ñ ÑÑÑоки
const string = "12345";
const reversed = Array.prototype.map
.call(string, (x) => x)
.reverse()
.join("");
// reversed Ñавен '54321'
// ÐонÑÑ: иÑполÑзÑйÑе '===' Ð´Ð»Ñ Ð¿ÑовеÑки Ñого, ÑвлÑеÑÑÑ Ð»Ð¸ ÑÑÑока палиндÑомом
Ðолее пÑоÑÑÑм ÑпоÑобом бÑÐ´ÐµÑ Ð¸ÑполÑзование меÑода String.split()
(Ñм. пÑÐ¸Ð¼ÐµÑ Ð¾Ð±ÑаÑение ÑÑÑоки пÑи помоÑи меÑода split()).
(навеÑно ÑÑой запиÑÑÑ Ð² блоге)
РаÑпÑоÑÑÑанÑнной пÑакÑикой ÑвлÑеÑÑÑ Ð¸ÑполÑзование колбÑк-ÑÑнкÑии Ñ Ð¾Ð´Ð½Ð¸Ð¼ аÑгÑменÑом (ÑлеменÑ, над коÑоÑÑм пÑоизводиÑÑÑ Ð¾Ð¿ÐµÑаÑиÑ). ÐекоÑоÑÑе ÑÑнкÑии Ñакже ÑиÑоко иÑполÑзÑеÑÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ аÑгÑменÑом, Ñ Ð¾ÑÑ Ð¾Ð½Ð¸ пÑинимаÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑе необÑзаÑелÑнÑе аÑгÑменÑÑ. ÐÑи пÑивÑÑки могÑÑ Ð¿ÑивеÑÑи к Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿ÑогÑаммÑ.
// РаÑÑмоÑÑим пÑимеÑ:
["1", "2", "3"].map(parseInt);
// ХоÑÑ Ð¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ñй ÑезÑлÑÑÐ°Ñ Ð²Ñзова Ñавен [1, 2, 3],
// в дейÑÑвиÑелÑноÑÑи полÑÑаем [1, NaN, NaN]
// ФÑнкÑÐ¸Ñ parseInt ÑаÑÑо иÑполÑзÑеÑÑÑ Ñ Ð¾Ð´Ð½Ð¸Ð¼ аÑгÑменÑом, но она пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ð´Ð²Ð°.
// ÐеÑвÑй аÑгÑÐ¼ÐµÐ½Ñ ÑвлÑеÑÑÑ Ð²ÑÑажением, а вÑоÑой - оÑнованием ÑиÑÑÐµÐ¼Ñ ÑÑиÑлениÑ.
// Ð ÑÑнкÑÐ¸Ñ callback Array.prototype.map пеÑедаÑÑ 3 аÑгÑменÑа:
// ÑлеменÑ, его Ð¸Ð½Ð´ÐµÐºÑ Ð¸ Ñам маÑÑив.
// ТÑеÑий аÑгÑÐ¼ÐµÐ½Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ parseInt, но не вÑоÑой, ÑледоваÑелÑно,
// возможна пÑÑаниÑа. СмоÑÑиÑе запиÑÑ Ð² блоге Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии.
const returnInt = (element) => parseInt(element, 10);
["1", "2", "3"].map(returnInt);
// РезÑлÑÑаÑом ÑвлÑеÑÑÑ Ð¼Ð°ÑÑив ÑиÑел (как и ожидалоÑÑ)
// ÐÑоÑÑейÑий ÑпоÑоб добиÑÑÑÑ Ð²ÑÑеознаÑенного Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¸ избежаÑÑ ÑÑвÑÑва "ÑÑ Ð·Ð°!?":
["1", "2", "3"].map(Number); // [1, 2, 3]
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
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