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

javascriptlet 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:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.map(function(elem) {
  return elem * 2;
});

console.log(res);

Resultatet av exekveringen:

javascript[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:

javascriptlet arr = [1, 2, 3, 4, 5];

let res = arr.map(function(elem, index) {
  return elem * index;
});

console.log(res);

Resultatet av exekveringen:

javascript[0, 2, 6, 12, 20]

Exempel

Vid behov kan man skicka själva arrayen som tredje parameter:

javascriptlet 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:

javascriptlet 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:

javascriptlet 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:

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);

Se även

  • metoden forEach,
    som tillämpar en funktion på varje element i arrayen
  • metoden filter,
    som låter dig filtrera element i en array
  • metoderna some och every,
    som utför kontroll av en array
  • metoderna reduce och reduceRight,
    som reducerar en array till ett enda värde