Metode map

Metode map ļauj piemērot doto funkciju katram masīva elementam. Šī metode nemaina sākotnējo masīvu, bet atgriež modificēto.

Metode parametrā saņem funkciju, kas tiks izpildīta katram masīva elementam. Tas, ko šī funkcija atgriezīs caur return masīva elementam, kļūs par šī elementa jauno vērtību (sk. piemērus).

Funkcijai var nodot 3 parametrus. Ja šie parametri ir (tie nav obligāti), tad pirmajā automātiski nonāks elements no masīva, otrajā nonāks tā kārtas numurs masīvā (indekss), bet trešajā - pats masīvs.

Sintakse

javascriptlet jaunais_masivs = masivs.map(function(elements, indekss, masivs) {
  kods
  return mainits_elements;
});

Piemērs

Izveidosim masīvu, kurā katrs elements ir divreiz lielāks par atbilstošo elementu sākotnējā masīvā:

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

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

console.log(res);

Koda izpildes rezultāts:

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

Piemērs

Izveidosim masīvu, kurā katrs elements tiek iegūts šādi - elementa vērtība tiek reizināta ar tā kārtas numuru masīvā:

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

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

console.log(res);

Koda izpildes rezultāts:

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

Piemērs

Ja nepieciešams, trešajā parametrā var padot pašu masīvu:

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

let res = arr.map(function(elem, index, arr) {
  šeit būs pieejams masīvs arr
});

Piemērs

Metodi map var izmantot arī daudzdimensiju masīvu apstaigāšanai. Pieņemsim, ka, piemēram, ir dots šāds masīvs:

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

Apstaigāsim šo masīvu ar map un izvadīsim tā elementus konsolē:

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

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

Rezultātā console.log izvadīs [1, 2, 3], tad [4, 5, 6], tad [7, 8, 9].

Kā redzat, mainīgajā elem nonāk podmasīvi. Tagad piemērosim metodi map katram podmasīvam un kāpināsim katru tā elementu kvadrātā:

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

Skatiet arī

  • metode forEach,
    kas piemēro funkciju katram masīva elementam
  • metode filter,
    kas ļauj filtrēt masīva elementus
  • metodes some un every,
    kas veic masīva pārbaudi
  • metodes reduce un reduceRight,
    kas sarullē masīvu līdz vienai vērtībai