Map metodas

Metodas map leidžia pritaikyti nurodytą funkciją kiekvienam masyvo elementui. Šis metodas nekeičia pradinio masyvo, o grąžina pakeistą.

Metodas parametruose gauna funkciją, kuri bus vykdoma kiekvienam masyvo elementui. Tai, ką ši funkcija grąžins per return masyvo elementui, taps nauja šio elemento reikšme (žr. pavyzdžius).

Į funkciją galima perduoti 3 parametrus. Jei šie parametrai yra (jie nėra privalomi), tai pirmasis automatiškai gaus masyvo elementą, antrasis - jo numerį masyve (indeksą), o trečiasis - patį masyvą.

Sintaksė

javascriptlet naujasMasyvas = masyvas.map(function(elementas, indeksas, masyvas) {
  kodas
  return pakeistasElementas;
});

Pavyzdys

Sukurkime masyvą, kurio kiekvienas elementas yra dvigubai didesnis už atitinkamą pradinio masyvo elementą:

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

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

console.log(res);

Kodo vykdymo rezultatas:

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

Pavyzdys

Sukurkime masyvą, kurio kiekvienas elementas gaunamas taip - elemento reikšmė dauginama iš jo eilės numerio masyve:

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

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

console.log(res);

Kodo vykdymo rezultatas:

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

Pavyzdys

Jei reikia, į trečią parametrą galima perduoti patį masyvą:

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

let res = arr.map(function(elem, index, arr) {
  čia bus prieinamas masyvas arr
});

Pavyzdys

Metodą map galima naudoti ir daugiamačių masyvų iteravimui. Tarkime, pavyzdžiui, duotas toks masyvas:

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

Periteruokime šį masyvą naudodami map ir išveskime jo elementus į konsolę:

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

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

Rezultate console.log išves [1, 2, 3], paskui [4, 5, 6], paskui [7, 8, 9].

Kaip matote, į kintamąjį elem pateko podmasyvai. Dabar pritaikykime metodą map kiekvienam podmasyvui ir pakelkime kiekvieną jo elementą kvadratu:

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

Taip pat žiūrėkite

  • metodas forEach,
    kuris pritaiko funkciją kiekvienam masyvo elementui
  • metodas filter,
    kuris leidžia filtruoti masyvo elementus
  • metodai some ir every,
    atliekantys masyvo patikrinimą
  • metodai reduce ir reduceRight,
    sutraukiantys masyvą į vieną reikšmę