Metode flatMap

Metode flatMap atgriež jaunu masīvu, kas izveidots pēc tam, kad katram sākotnējā masīva elementam tika piemērots atpakaļizsaukums, kas norādīts metodes parametrā. No pirmā acu uzmetiena metode flatMap līdzinās metodei map, bet tās galvenā atšķirība ir tā, ka tā vienmēr atgriež viendimensijas masīvu.

Sintakse

javascriptlet newArray = masīvs.flatMap(funkcija);

Piemērs

Izmantosim metodi flatMap, lai iegūtu jaunu masīvu:

javascriptlet arr = ['a', 'b', 'c'];

let res = arr.flatMap(function(elem) {
  return elem + '!';
});

console.log(res);

Koda izpildes rezultāts:

javascript['a!', 'b!', 'c!']

Piemērs

Izmantosim metodi flatMap, lai iegūtu jaunu masīvu no sākotnējā masīva, kas sastāv no skaitļiem:

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

let res = arr.flatMap(function(elem) {
  return elem + 2;
});

console.log(res);

Koda izpildes rezultāts:

javascript[3, 4, 5, 6, 7]

Piemērs

Mēģināsim piemērot metodi flatMap masīvam ar pirmo ligzdotības līmeni:

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

let res = arr.flatMap(function getElem(elem){
  return elem + 2;
});

console.log(res);

Pēc koda izpildes mēs redzēsim, ka funkcijas nosacījumi tika piemēroti podmasīvam, uzskatot to par vienu elementu. Tāpēc šīs metodes izsaukšanai ligzdotos masīvos nav jēgas:

javascript[3, 4, 5, '4,52']

Piemērs

Ja mēs vēlamies neiesaistīties ar ligzdotības līmeni, bet apvienot visu masīvu, tad izmantojam parametru Infinity:

javascriptlet arr = ['a', 'b', ['c', 'd', ['e', 'f', ['g', 'h', ['i']]]]];

let res = arr.flatMap(Infinity);

console.log(res);

Koda izpildes rezultāts:

javascript[
  'a', 'b', 'c',
  'd', 'e', 'f',
  'g', 'h', 'i'
]

Piemērs

Piemērosim masīvam divas metodes: flatMap un map, turklāt abu metodu parametrā tiks norādīta funkcija, kas padara masīvu divdimensiju:

javascriptlet arr = [1, 2, 3, 4, 5, 6];
let res1 = arr.map(elem => [elem * 3]);
let res2 = arr.flatMap(elem => [elem * 3]);

console.log('metode map', res1);
console.log('metode flatMap', res2);

Koda izpildes rezultāts:

javascript'metode map' [[3], [6], [9], [12], [15], [18]]
'metode flatMap' [3, 6, 9, 12, 15, 18]

Skatiet arī

  • metode flat,
    kas atgriež masīvu no podmasīviem