Metoda map

Metoda map umožňuje aplikovat zadanou funkci na každý prvek pole. Přitom metoda nemění původní pole, ale vrací upravené.

Metoda v parametru přijímá funkci, která se provede pro každý prvek pole. To, co tato funkce vrátí pomocí return pro prvku pole, se stane novou hodnotou tohoto prvku (viz příklady).

Do funkce lze předat 3 parametry. Pokud tyto parametry existují (nejsou povinné), tak do prvního bude automaticky dosazen prvek pole, do druhého bude dosazeno jeho pořadové číslo v poli (index), a do třetího - samotné pole.

Syntaxe

javascriptlet nové pole = pole.map(function(prvek, index, pole) {
  kód
  return upravený prvek;
});

Příklad

Vytvoříme pole, kde každý prvek je dvakrát větší než odpovídající prvek výchozího pole:

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

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

console.log(res);

Výsledek provedení kódu:

javascript[2, 4, 6, 8, 10]

Příklad

Vytvoříme pole, kde každý prvek získáme tak, že hodnotu prvku vynásobíme jeho pořadovým číslem v poli:

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

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

console.log(res);

Výsledek provedení kódu:

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

Příklad

V případě potřeby lze do třetího parametru předat samotné pole:

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

let res = arr.map(function(elem, index, arr) {
  zde bude dostupné pole arr
});

Příklad

Metodu map lze použít i pro průchod vícerozměrnými poli. Předpokládejme například, že máme následující pole:

javascriptlet arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

Projděme toto pole pomocí map a vypišme jeho prvky do konzole:

javascriptlet arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]];

let result = arr.map(function(elem) {
  console.log(elem);
});

V důsledku toho console.log vypíše [1, 2, 3], poté [4, 5, 6], poté [7, 8, 9].

Jak vidíte, do proměnné elem se dostávají podpole. Nyní aplikujme metodu map na každé podpole a umocněme každý jeho prvek na druhou:

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

Viz také

  • metoda forEach,
    která aplikuje funkci pro každý prvek pole
  • metoda filter,
    která umožňuje filtrovat prvky pole
  • metody some a every,
    provádějící kontrolu pole
  • metody reduce a reduceRight,
    redukující pole na jednu hodnotu