Geschrieben von

JavaScript: map

WebDev

Oft kommt es vor, dass man jedes Element in einem Array verändern möchte. Nun könnte man mit einer for-Schleife über die Elemente iterieren. Es gibt aber eine einfachere Möglichkeit: Mit der map-Methode.

Ein Beispiel der map-Methode

Mit der map-Methode kann man über jedes Element eines Arrays iterieren. Die Elemente können mittels einer Callback-Funktion geändert werden. Gehen wir vom folgenden Array aus:

let arr = [2, 4, 6, 8];

Jetzt möchten wir jedes Element mit 2 multiplizieren. Dazu könnte man eine for-Schleife verwenden:

let arr = [2, 4, 6, 8];
 
for (let i = 0; i < arr.length; i++) {   arr[i] = arr[i] * 2; }   console.log(arr); // [4, 8, 12, 16]

Das gleiche Ergebnis kann man aber einfacher mit der map-Methode erzielen:

let arr = [2, 4, 6, 8];
 
let modArr = arr.map(function(element){
  return element * 2;
});
 
console.log(modArr); // [4, 8, 12, 16]

Oder ein anderes Beispiel. Nehmen wir an, wir haben ein Array mit Objekten, welches Vor- und Nachnamen enthält:

let users = [
  {firstName : "Thomas", lastName: "Muster"},
  {firstName : "Max", lastName: "Millian"},
  {firstName : "Sarah", lastName: "Muster"}
];

Nun möchten wir Vor- und Nachnamen verbinden. Mit der map-Methode gelingt uns das wie folgt:

let users = [
  {firstName : "Thomas", lastName: "Muster"},
  {firstName : "Max", lastName: "Millian"},
  {firstName : "Sarah", lastName: "Muster"}
];
 
let userNames = users.map(function(element){
  return `${element.firstName} ${element.lastName}`;
});
 
console.log(userNames); // ["Thomas Muster", "Max Millian", "Sarah Muster"]

Syntax

Kommen wir zur Syntax der map-Methode, die wie folgt aussieht:

arr.map(function(element, index, array){}, this);

Wie man sieht wird die map-Methode an das Array angehängt. Danach folgt die Callback-Funktion, die 3 Parameter entgegen nehmen kann:

  • element: Das ist das aktuelle Element aus dem Array (erforderliche Angabe).
  • index: Der Index des aktuellen Elements (optionale Angabe).
  • array: Das ganze Array (optionale Angabe).

Das this-Keyword kann ebenfalls als Kontext-Parameter mitgegeben werden (optional), welches innerhalb der Callback-Funktion genutzt werden kann. Standardmäßig ist dieses undefined. Kann aber auch geändert werden:

arr.map(function(element, index, array){
  console.log(this) // 100
}, 100);

Auch die anderen Parameter kann man sich ausgeben lassen, um zu sehen, was sich dahinter verbirgt:

let arr = [10, 20,30, 40];
 
arr.map(function(element, index, array){
  console.log(element);
  console.log(index);
  console.log(array);
  return element;
}, 100);

Im Hinterkopf sollte man sich bei der Arbeit mit der map-Methode folgendes behalten:

  • Die map-Methode erstellt ein neues Array mit den Ergebnissen des Funktionsaufrufs.
  • Die map-Methode führt die definierte Funktion auf jedes Element im Array einmal der Reihe nach auf.
  • Für leere Elemente wird die Funktion innerhalb map nicht ausgeführt.
  • Das ursprüngliche Array wird nicht verändert.
  • Elemente, die nach beginnen des map-Aufrufs an das Array angehängt werden, werden nicht mehr berücksichtigt.