Meetod flatMap

Meetod flatMap tagastab uue massiivi, mis on loodud pärast seda, kui igale lähtemassiivi elemendile rakendati tagasikutset, mis on määratud meetodi parameetris. Esmapilgul meenutab meetod flatMap meetodit map, kuid selle peamine erinevus on selles, et see tagastab alati ühemõõtmelise massiivi.

Süntaks

javascriptlet newArray = massiiv.flatMap(funktsioon);

Näide

Saagem uue massiivi, kasutades meetodit flatMap:

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

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

console.log(res);

Koodi täitmise tulemus:

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

Näide

Saagem uue massiivi lähtemassiivist, mis koosneb numbritest:

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

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

console.log(res);

Koodi täitmise tulemus:

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

Näide

Proovime rakendada meetodit flatMap massiivile, millel on esimene pesastustase:

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

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

console.log(res);

Pärast koodi täitmist näeme, et funktsiooni tingimused rakendusid alamassiivile, lugedes selle üheks elemendiks. Seetõttu pole selle meetodi kasutamine pesastatud massiivides mõttekas:

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

Näide

Kui me ei taha tegeleda pesastustasemetega, vaid soovime kogu massiivi ühendada, siis kasutame parameetrit Infinity:

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

let res = arr.flatMap(Infinity);

console.log(res);

Koodi täitmise tulemus:

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

Näide

Rakendame massiivile kaks meetodit: flatMap ja map, kusjuures mõlema meetodi parameetris on määratud funktsioon, mis teeb massiivi kahemõõtmeliseks:

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

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

Koodi täitmise tulemus:

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

Vaata ka

  • meetod flat,
    mis tagastab massiivi alamassiividest