Die flatMap-Methode

Die Methode flatMap gibt ein neues Array zurück, das erstellt wurde, nachdem auf jedes Element des ursprünglichen Arrays der Callback angewendet wurde, der im Parameter der Methode angegeben ist. Auf den ersten Blick ähnelt die Methode flatMap der Methode map, aber ihr Hauptunterschied besteht darin, dass sie immer ein eindimensionales Array zurückgibt.

Syntax

javascriptlet newArray = array.flatMap(Funktion);

Beispiel

Lassen Sie uns ein neues Array erhalten, indem wir die Methode flatMap verwenden:

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

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

console.log(res);

Ergebnis der Codeausführung:

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

Beispiel

Lassen Sie uns ein neues Array aus einem ursprünglichen Array bestehend aus Zahlen erhalten:

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

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

console.log(res);

Ergebnis der Codeausführung:

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

Beispiel

Lassen Sie uns versuchen, die Methode flatMap auf ein Array mit der ersten Verschachtelungsebene anzuwenden:

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

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

console.log(res);

Nach der Ausführung des Codes werden wir sehen, dass die Funktionsbedingungen auf das Subarray angewendet wurden und es als ein Element gezählt haben. Daher ist der Aufruf dieser Methode bei verschachtelten Arrays sinnlos:

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

Beispiel

Wenn wir uns nicht mit der Verschachtelungstiefe beschäftigen, sondern das gesamte Array zusammenführen wollen, verwenden wir den Parameter Infinity:

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

let res = arr.flatMap(Infinity);

console.log(res);

Ergebnis der Codeausführung:

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

Beispiel

Lassen Sie uns zwei Methoden auf ein Array anwenden: flatMap und map, wobei im Parameter beider Methoden eine Funktion angegeben wird, die das Array zweidimensional macht:

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);

Ergebnis der Codeausführung:

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

Siehe auch

  • die Methode flat,
    die ein Array aus Subarrays zurückgibt