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
let newArray = massiiv.flatMap(funktsioon);
Näide
Saagem uue massiivi,
kasutades meetodit flatMap:
let arr = ['a', 'b', 'c'];
let res = arr.flatMap(function(elem) {
return elem + '!';
});
console.log(res);
Koodi täitmise tulemus:
['a!', 'b!', 'c!']
Näide
Saagem uue massiivi lähtemassiivist, mis koosneb numbritest:
let arr = [1, 2, 3, 4, 5];
let res = arr.flatMap(function(elem) {
return elem + 2;
});
console.log(res);
Koodi täitmise tulemus:
[3, 4, 5, 6, 7]
Näide
Proovime rakendada meetodit
flatMap massiivile, millel on esimene
pesastustase:
let 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:
[3, 4, 5, '4,52']
Näide
Kui me ei taha tegeleda pesastustasemetega,
vaid soovime kogu massiivi ühendada, siis kasutame parameetrit Infinity:
let arr = ['a', 'b', ['c', 'd', ['e', 'f', ['g', 'h', ['i']]]]];
let res = arr.flatMap(Infinity);
console.log(res);
Koodi täitmise tulemus:
[
'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:
let 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:
'meetod map' [[3], [6], [9], [12], [15], [18]]
'meetod flatMap' [3, 6, 9, 12, 15, 18]
Vaata ka
-
meetod
flat,
mis tagastab massiivi alamassiividest