De flatMap Methode

De methode flatMap retourneert een nieuwe array, gemaakt nadat op elk element van de bronarray de callback, gespecificeerd in de parameter van de methode, is toegepast. Op het eerste gezicht lijkt de methode flatMap op de methode map, maar het belangrijkste verschil is dat het altijd een eendimensionale array retourneert.

Syntaxis

javascriptlet newArray = array.flatMap(functie);

Voorbeeld

Laten we een nieuwe array verkrijgen, met behulp van de methode flatMap:

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

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

console.log(res);

Resultaat van de code-uitvoering:

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

Voorbeeld

Laten we een nieuwe array verkrijgen uit een bronarray bestaande uit getallen:

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

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

console.log(res);

Resultaat van de code-uitvoering:

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

Voorbeeld

Laten we proberen de methode flatMap toe te passen op een array met het eerste niveau van genestheid:

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

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

console.log(res);

Na het uitvoeren van de code zien we dat de voorwaarden van de functie werden toegepast op de subarray, deze beschouwend als één element. Daarom heeft het aanroepen van deze methode op geneste arrays geen zin:

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

Voorbeeld

Als we ons niet willen bezighouden met het niveau van genestheid, maar de hele array willen samenvoegen, dan gebruiken we de parameter Infinity:

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

let res = arr.flatMap(Infinity);

console.log(res);

Resultaat van de code-uitvoering:

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

Voorbeeld

Laten we twee methoden toepassen op de array: flatMap en map, waarbij in de parameter van beide methoden een functie wordt opgegeven die de array tweedimensionaal maakt:

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

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

Resultaat van de code-uitvoering:

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

Zie ook

  • de methode flat,
    die een array retourneert uit subarrays