Map metodas
Metodas map leidžia pritaikyti nurodytą
funkciją kiekvienam masyvo elementui. Šis
metodas nekeičia pradinio masyvo, o
grąžina pakeistą.
Metodas parametruose gauna funkciją, kuri
bus vykdoma kiekvienam masyvo elementui.
Tai, ką ši funkcija grąžins per return
masyvo elementui, taps nauja šio elemento reikšme
(žr. pavyzdžius).
Į funkciją galima perduoti 3 parametrus.
Jei šie parametrai yra (jie nėra privalomi),
tai pirmasis automatiškai gaus masyvo elementą,
antrasis - jo numerį masyve
(indeksą), o trečiasis - patį masyvą.
Sintaksė
let naujasMasyvas = masyvas.map(function(elementas, indeksas, masyvas) {
kodas
return pakeistasElementas;
});
Pavyzdys
Sukurkime masyvą, kurio kiekvienas elementas yra dvigubai didesnis už atitinkamą pradinio masyvo elementą:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Kodo vykdymo rezultatas:
[2, 4, 6, 8, 10]
Pavyzdys
Sukurkime masyvą, kurio kiekvienas elementas gaunamas taip - elemento reikšmė dauginama iš jo eilės numerio masyve:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Kodo vykdymo rezultatas:
[0, 2, 6, 12, 20]
Pavyzdys
Jei reikia, į trečią parametrą galima perduoti patį masyvą:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
čia bus prieinamas masyvas arr
});
Pavyzdys
Metodą map galima naudoti ir
daugiamačių masyvų iteravimui. Tarkime, pavyzdžiui,
duotas toks masyvas:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Periteruokime šį masyvą naudodami
map ir išveskime jo elementus į konsolę:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Rezultate console.log išves [1,
2, 3], paskui [4, 5, 6], paskui
[7, 8, 9].
Kaip matote, į kintamąjį elem pateko
podmasyvai. Dabar pritaikykime metodą
map kiekvienam podmasyvui ir pakelkime
kiekvieną jo elementą kvadratu:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
return elem.map(function(num) {
return num * num;
});
});
console.log(result);