Meetod map
Meetod map võimaldab rakendada antud
funktsiooni iga massiivi elemendi jaoks.
Samal ajal meetod ei muuda algset massiivi, vaid
tagastab muudetud massiivi.
Meetod saab parameetrina funktsiooni, mis
käivitatakse iga massiivi elemendi jaoks.
See, mida see funktsioon tagastab läbi return
massiivi elemendi jaoks, saab selle elemendi
uueks väärtuseks (vt näiteid).
Funktsioonile saab edastada 3 parameetrit.
Kui need parameetrid on olemas (need pole kohustuslikud),
siis esimesse satub automaatselt massiivi element,
teise satub selle number massiivis
(indeks) ja kolmandasse - massiiv ise.
Süntaks
let uus_massiiv = massiiv.map(function(element, indeks, massiiv) {
kood
return muudetud_element;
});
Näide
Loome massiivi, mille iga element on kaks korda suurem kui vastav element algmassiivis:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Koodi täitmise tulemus:
[2, 4, 6, 8, 10]
Näide
Loome massiivi, mille iga element saadakse nii - elemendi väärtus korrutatakse selle järjekorranumbriga massiivis:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Koodi täitmise tulemus:
[0, 2, 6, 12, 20]
Näide
Vajadusel saab kolmanda parameetrina edastada massiivi ise:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
siin on kättesaadav massiiv arr
});
Näide
Meetodit map saab kasutada ka
mitmemõõtmeliste massiivide läbimiseks. Oletame, näiteks,
et on antud selline massiiv:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Läbime selle massiivi meetodiga
map ja väljastame selle elemendid konsooli:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Tulemusena console.log väljastab [1,
2, 3], siis [4, 5, 6], siis
[7, 8, 9].
Nagu näete, muutujasse elem satuvad
alamassiivid. Rakendame nüüd meetodit
map igale alamassiivile ja tõstame
iga selle elemendi ruutu:
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);