Metoden map
Metoden map lar deg bruke en gitt
funksjon for hvert element i arrayet.
Metoden endrer ikke den opprinnelige arrayen, men
returnerer en modifisert en.
Metoden mottar i parameteren en funksjon som
vil kjøres for hvert element i arrayet.
Det som returneres fra denne funksjonen via return
for arrayelementet, vil bli den nye verdien
til dette elementet (se eksempler).
Man kan sende 3 parametere til funksjonen.
Hvis disse parameterne er til stede (de er ikke obligatoriske),
vil den første automatisk få arrayelementet,
den vil andre få dens nummer i arrayet
(indeksen), og den tredje - selve arrayet.
Syntaks
let nyArray = array.map(function(element, indeks, array) {
kode
return modifisert element;
});
Eksempel
La oss opprette en array der hvert element er dobbelt så stort som det tilsvarende elementet i startarrayen:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Resultatet av kjøring av koden:
[2, 4, 6, 8, 10]
Eksempel
La oss opprette en array der hvert element oppnås slik - elementets verdi multipliseres med dens ordensnummer i arrayet:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Resultatet av kjøring av koden:
[0, 2, 6, 12, 20]
Eksempel
Ved behov kan man i den tredje parameteren sende selve arrayet:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
// her vil arrayen arr være tilgjengelig
});
Eksempel
Metoden map kan også brukes til
å gå gjennom flerdimensjonale arrays. La oss for eksempel
anta at vi har følgende array:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
La oss gå gjennom denne arrayen med
map og skrive ut elementene i konsollen:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Som et resultat vil console.log skrive ut [1,
2, 3], deretter [4, 5, 6], deretter
[7, 8, 9].
Som du ser, havner underarrayene i variabelen elem.
La oss nå bruke metoden
map på hvert underarray og kvadrere
hvert av dets elementer:
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);