Viết hàm mảng nhận mảng lồng nhau và trả về mảng phẳng chứa tất cả phần tử không lồng nhau.
Ví dụ:
// Input: [[1, 2, 3], [4, 5], [6]]// Output: [1, 2, 3, 4, 5, 6]
Phương pháp 1: Dùng đệ quy
Lặp qua mảng gốc và đệ quy đẩy các phần tử lồng nhau vào mảng mới.
Ví dụ
const arr = [[1, 2, 3], [4, 5], [6]];const flatten = function() { let res = []; for (let i = 0; i < this.length; i++) { if (Array.isArray(this[i])) { res.push(...this[i].flatten()); } else { res.push(this[i]); } } return res;};Array.prototype.flatten = flatten;console.log(arr.flatten());Phương pháp 2: Dùng Array.prototype.reduce()
Sử dụng reduce() để xây dựng mảng mới:
Ví dụ
const arr = [[1, 2, 3], [4, 5], [6]];const flatten = function() { return this.reduce((acc, val) => { return acc.concat(...val); }, []);};Array.prototype.flatten = flatten;console.log(arr.flatten());Kết quả
Đầu ra console cho cả hai phương pháp:
[ 1, 2, 3, 4, 5, 6 ]