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
javascriptlet 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:
javascriptlet arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Koodi täitmise tulemus:
javascript[2, 4, 6, 8, 10]
Näide
Loome massiivi, mille iga element saadakse nii - elemendi väärtus korrutatakse selle järjekorranumbriga massiivis:
javascriptlet arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Koodi täitmise tulemus:
javascript[0, 2, 6, 12, 20]
Näide
Vajadusel saab kolmanda parameetrina edastada massiivi ise:
javascriptlet 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:
javascriptlet arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Läbime selle massiivi meetodiga
map ja väljastame selle elemendid konsooli:
javascriptlet 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:
javascriptlet 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);