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

Làm phẳng mảng lồng sâu (Flatten) trong JavaScript

Chúng ta cần viết một hàm JavaScript nhận vào một mảng lồng nhau của các giá trị chữ nghĩa làm đối số duy nhất. Hàm nên xây dựng một mảng mới chứa tất cả các phần tử chữ nghĩa có trong mảng đầu vào nhưng không có lồng nhau.

Ví dụ:

Nếu mảng đầu vào là:

const arr = [    1, 3, [5, 6, [7, [6, 5], 4], 3], [4] ];

Thì mảng đầu ra nên là:

const output = [1, 3, 5, 6, 7, 6, 5, 4, 3, 4];

Ví dụ

Dưới đây là mã nguồn:

const arr = [    1, 3, [5, 6, [7, [6, 5], 4], 3], [4] ]; const flattenArray = (arr = []) => {    const res = [];    for(let i = 0; i < arr.length; i++){       const el = arr[i];       if(Array.isArray(el)){          res.push(...flattenArray(el));       }else{          res.push(el);       };    };    return res; }; console.log(flattenArray(arr));

Kết quả

Đầu ra trên console:

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

Lưu ý: Đây là cách đệ quy. ES2019 cung cấp arr.flat(Infinity) làm phẳng một lần. Cách đệ quy phù hợp khi không hỗ trợ flat() hoặc cần tùy biến logic.