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
let newArray = array.flatMap(Funktion);
Beispiel
Lassen Sie uns ein neues Array erhalten,
indem wir die Methode flatMap verwenden:
let arr = ['a', 'b', 'c'];
let res = arr.flatMap(function(elem) {
return elem + '!';
});
console.log(res);
Ergebnis der Codeausführung:
['a!', 'b!', 'c!']
Beispiel
Lassen Sie uns ein neues Array aus einem ursprünglichen Array bestehend aus Zahlen erhalten:
let arr = [1, 2, 3, 4, 5];
let res = arr.flatMap(function(elem) {
return elem + 2;
});
console.log(res);
Ergebnis der Codeausführung:
[3, 4, 5, 6, 7]
Beispiel
Lassen Sie uns versuchen, die Methode
flatMap auf ein Array mit der ersten
Verschachtelungsebene anzuwenden:
let 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:
[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:
let arr = ['a', 'b', ['c', 'd', ['e', 'f', ['g', 'h', ['i']]]]];
let res = arr.flatMap(Infinity);
console.log(res);
Ergebnis der Codeausführung:
[
'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:
let 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:
'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