Metóda map

Metóda map umožňuje aplikovať zadanú funkciu pre každý prvok poľa. Pritom metóda nemení pôvodné pole, ale vracia upravené.

Metóda v parametri dostane funkciu, ktorá vykoná pre každý prvok poľa. To, čo vráti táto funkcia cez return pre prvku poľa, sa stane novou hodnotou tohto prvku (pozri príklady).

Do funkcie je možné odovzdať 3 parametre. Ak tieto parametre existujú (nie sú povinné), tak do prvého automaticky príde prvok poľa, do druhého príde jeho číslo v poli (index), a do tretieho - samotné pole.

Syntax

javascriptlet nove pole = pole.map(function(prvok, index, pole) {
  kod
  return upraveny prvok;
});

Príklad

Vytvorme pole, kde každý prvok je dvakrát väčší ako zodpovedajúci prvok počiatočného poľa:

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

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

console.log(res);

Výsledok vykonania kódu:

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

Príklad

Vytvorme pole, kde každý prvok sa získa tak - hodnota prvku sa vynásobí jeho poradovým číslom v poli:

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

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

console.log(res);

Výsledok vykonania kódu:

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

Príklad

V prípade potreby je možné do tretieho parametra odovzdať samotné pole:

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

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

Príklad

Metódu map je možné použiť aj pre prechádzanie viacrozmerných polí. Nech je napríklad dané takéto pole:

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

Prejdime toto pole pomocou map a vypíšme jeho prvky do konzoly:

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

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

Výsledkom console.log bude výpis [1, 2, 3], potom [4, 5, 6], potom [7, 8, 9].

Ako vidíte, do premennej elem prichádzajú podpolia. Aplikujme teraz metódu map na každé podpole a umocnime každý jeho prvok na druhú:

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

Pozri tiež

  • metóda forEach,
    ktorá aplikuje funkciu pre každý prvok poľa
  • metóda filter,
    ktorá umožňuje filtrovať prvky poľa
  • metódy some a every,
    vykonávajúce kontrolu poľa
  • metódy reduce a reduceRight,
    zlučujúce pole do jednej hodnoty