Metod map
Metod map omogućava primenu zadate
funkcije za svaki element niza. Pri
tome metod ne menja početni niz, već
vraća izmenjeni.
Metod u parametru prima funkciju, koja
će se izvršiti za svaki element niza.
Ono što ova funkcija vrati putem return
za element niza, postaće nova vrednost
tog elementa (pogledajte primere).
U funkciju se mogu proslediti 3 parametra.
Ako ovi parametri postoje (nisu obavezni),
tada će u prvi automatski biti smešten element
niza, u drugi će biti smešten njegov broj u nizu
(indeks), a u treći - sam niz.
Sintaksa
let noviNiz = niz.map(function(element, indeks, niz) {
kod
return izmenjeniElement;
});
Primer
Napravićemo niz čiji je svaki element dva puta veći od odgovarajućeg elementa početnog niza:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Rezultat izvršavanja koda:
[2, 4, 6, 8, 10]
Primer
Napravićemo niz čiji se svaki element dobija na sledeći način - vrednost elementa se množi sa njegovim rednim brojem u nizu:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Rezultat izvršavanja koda:
[0, 2, 6, 12, 20]
Primer
Po potrebi se u treći parametar može proslediti sam niz:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
ovde će biti dostupan niz arr
});
Primer
Metod map se može koristiti i za
prolazak kroz višedimenzionalne nizove. Neka je, na primer,
dat ovakav niz:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Hajde da prođemo kroz ovaj niz pomoću
map i ispišemo njegove elemente u konzolu:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Kao rezultat console.log će ispisati [1,
2, 3], zatim [4, 5, 6], pa
[7, 8, 9].
Kao što vidite, u promenljivu elem se smeštaju
podnizovi. Hajde sada da primenimo metod
map na svaki podniz i podignemo
svaki njegov element na kvadrat:
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);