Phương thức flatMap
Phương thức flatMap trả về
một mảng mới, được tạo ra sau khi
áp dụng callback
được chỉ định trong tham số của phương thức
vào từng phần tử của mảng ban đầu.
Thoạt nhìn, phương thức flatMap
giống với phương thức map, nhưng điểm khác biệt chính
của nó là luôn trả về một mảng một chiều.
Cú pháp
let newArray = mảng.flatMap(hàm);
Ví dụ
Hãy lấy một mảng mới,
sử dụng phương thức flatMap:
let arr = ['a', 'b', 'c'];
let res = arr.flatMap(function(elem) {
return elem + '!';
});
console.log(res);
Kết quả thực thi mã:
['a!', 'b!', 'c!']
Ví dụ
Hãy lấy một mảng mới từ mảng ban đầu gồm các số:
let arr = [1, 2, 3, 4, 5];
let res = arr.flatMap(function(elem) {
return elem + 2;
});
console.log(res);
Kết quả thực thi mã:
[3, 4, 5, 6, 7]
Ví dụ
Hãy thử áp dụng phương thức
flatMap vào một mảng có cấp độ
lồng nhau đầu tiên:
let arr = [1, 2, 3, [4, 5]];
let res = arr.flatMap(function getElem(elem){
return elem + 2;
});
console.log(res);
Sau khi thực thi mã chúng ta sẽ thấy rằng các điều kiện của hàm đã được áp dụng vào mảng con, coi nó như một phần tử duy nhất. Do đó, việc gọi phương thức này trên các mảng lồng nhau là vô nghĩa:
[3, 4, 5, '4,52']
Ví dụ
Nếu chúng ta muốn không phải bận tâm về cấp độ lồng nhau,
mà hợp nhất toàn bộ mảng, thì hãy sử dụng tham số Infinity:
let arr = ['a', 'b', ['c', 'd', ['e', 'f', ['g', 'h', ['i']]]]];
let res = arr.flatMap(Infinity);
console.log(res);
Kết quả thực thi mã:
[
'a', 'b', 'c',
'd', 'e', 'f',
'g', 'h', 'i'
]
Ví dụ
Hãy áp dụng hai phương thức vào mảng:
flatMap và map, và trong tham số của cả hai phương thức
sẽ chỉ định một hàm, biến mảng thành mảng hai chiều:
let arr = [1, 2, 3, 4, 5, 6];
let res1 = arr.map(elem => [elem * 3]);
let res2 = arr.flatMap(elem => [elem * 3]);
console.log('phương thức map', res1);
console.log('phương thức flatMap', res2);
Kết quả thực thi mã:
'phương thức map' [[3], [6], [9], [12], [15], [18]]
'phương thức flatMap' [3, 6, 9, 12, 15, 18]
Xem thêm
-
phương thức
flat,
phương thức trả về mảng từ các mảng con