Metoden flatMap

Metoden flatMap returnerar en ny array, skapad efter att varje element i den ursprungliga arrayen har applicerats med en callback, som anges i metodens parameter. Vid första anblicken verkar metoden flatMap likna metoden map, men dess huvudsakliga skillnad är att den alltid returnerar en endimensionell array.

Syntax

javascriptlet newArray = array.flatMap(funktion);

Exempel

Låt oss skapa en ny array, genom att använda metoden flatMap:

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

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

console.log(res);

Resultatet av kodkörningen:

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

Exempel

Låt oss skapa en ny array från en ursprungsarray som består av tal:

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

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

console.log(res);

Resultatet av kodkörningen:

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

Exempel

Låt oss försöka applicera metoden flatMap på en array med första nivån av nesting:

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

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

console.log(res);

Efter kodkörning ser vi att funktionens villkor applicerades på subarrayen, och behandlade den som ett element. Därför har anropet av denna metod på nesteda arrayer ingen mening:

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

Exempel

Om vi inte vill bry oss om nestningsnivån, utan bara vill slå ihop hela arrayen, använder vi parametern Infinity:

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

let res = arr.flatMap(Infinity);

console.log(res);

Resultatet av kodkörningen:

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

Exempel

Låt oss applicera två metoder på arrayen: flatMap och map, där funktionen i parametrarna för båda metoderna gör arrayen tvådimensionell:

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

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

Resultatet av kodkörningen:

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

Se även

  • metoden flat,
    som returnerar en array från subarrayer