Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Làm phẳng mảng (Flatten array) trong JavaScript

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 ]