Metoden map
Metoden map låter dig tillämpa en given
funktion på varje element i en array.
Metoden ändrar inte den ursprungliga arrayen, utan
returnerar en modifierad kopia.
Metoden tar en funktion som parameter, som
kommer att köras för varje element i arrayen.
Det som denna funktion returnerar via return
för arrayelementet blir elementets nya värde
(se exempel).
Man kan skicka 3 parametrar till funktionen.
Om dessa parametrar finns (de är inte obligatoriska),
kommer den första automatiskt att vara elementet
i arrayen, den andra blir dess position i arrayen
(index), och den tredje - själva arrayen.
Syntax
let nyArray = array.map(function(element, index, array) {
kod
return modifieratElement;
});
Exempel
Låt oss skapa en array där varje element är dubbelt så stort som motsvarande element i den ursprungliga arrayen:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem) {
return elem * 2;
});
console.log(res);
Resultatet av exekveringen:
[2, 4, 6, 8, 10]
Exempel
Låt oss skapa en array där varje element beräknas så här - elementets värde multipliceras med dess ordningsnummer i arrayen:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index) {
return elem * index;
});
console.log(res);
Resultatet av exekveringen:
[0, 2, 6, 12, 20]
Exempel
Vid behov kan man skicka själva arrayen som tredje parameter:
let arr = [1, 2, 3, 4, 5];
let res = arr.map(function(elem, index, arr) {
// här kommer arrayen arr att vara tillgänglig
});
Exempel
Metoden map kan också användas för
att iterera över multidimensionella arrayer. Låt oss säga att
vi har följande array:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
Låt oss iterera över denna array med
map och skriva ut dess element till konsolen:
let arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];
let result = arr.map(function(elem) {
console.log(elem);
});
Som ett resultat kommer console.log att skriva ut [1,
2, 3], sedan [4, 5, 6], sedan
[7, 8, 9].
Som du kan se, hamnar delarrayerna i variabeln elem.
Låt oss nu tillämpa metoden
map på varje delarray och kvadrera
varje element i den:
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);