Hi 🤓 Cảm ơn bạn đã ghé thăm blog này, nếu những bài viết trên blog giúp ích cho bạn. Bạn có thể giúp blog hiển thị quảng cáo bằng cách tạm ngừng ad blocker 😫 và để giúp blog duy trì hoạt động nếu bạn muốn.
Cảm ơn bạn!

flat() trong Javascript

Method flat() trong Javascript giúp chúng ta nối các phần tử mảng con (sub-array) và đưa các phần tử con này trở về cùng một depth và trả về một mảng mới.

Dưới đây là một ví dụ để các bạn dễ hình dung hơn:

const nestedArray = ['a', 'b', 'c', [1, 2]];

console.log(nestedArray.flat()); // ['a', 'b', 'c', 1, 2]

Như các bạn thấy ở trên là một mảng lồng nhau (nested array). Khi sử dụng flat() sẽ giúp chúng ta đưa các phần tử này về depth = 1.

flat() có depth mặc định là 1

Ví dụ khác:

const nestedArray = ['a', 'b', 'c', [1, 2],['d', 'e'],[['f']]];

console.log(nestedArray.flat()); 
// ['a', 'b', 'c', 1, 2, 'd', 'e', ['f']]
console.log(nestedArray.flat(2)); 
// ['a', 'b', 'c', 1, 2, 'd', 'e', 'f']

Với bao nhiêu depth thì ta sẽ bỏ bấy nhiêu [] trong phần tử con.

Chúng ta cũng có thể sử dụng cách khác để flat một mảng với ví dụ sau:

const arr = ['a', 'b', 'c', [1, 2]];

cách 1:
['a', 'b', 'c', [1, 2]].reduce((result, curr) => result.concat(curr),[]);
// ['a', 'b', 'c', 1, 2]

cách 2:
const flattened = (arr) => [].concat(...arr);
// ['a', 'b', 'c', 1, 2]

method concat() Javascript được sử dụng để gộp hai hoặc nhiều mảng. Phương thức này không thay đổi các mảng hiện có mà sẽ trả về một mảng mới.

Cách sử dụng reduce() Javascript bạn có thể xem tại đây.

👉 Với trường hợp bạn muốn đưa tất cả các sub-array trong mảng nested array trở về mảng thông thường (depth = 1) thì chúng ta có thể truyền Infinity (Một số vô hạn) vào flat().

const arr = ['e', 'f', 'g', [[['homiedev']]]]
arr.flat(Infinity); // ['e', 'f', 'g', 'homiedev']

👉 Xóa phần tử trống (empty slots) trong mảng

Method flat() có thể giúp chúng ta loại bỏ các empty slots trong mảng 👌.

const arr = [1, 2, , 4, , [], '', undefined, null];
arr.flat(); // [1, 2, 4, '', undefined, null]

Kết luận

Cảm ơn các bạn đã dành thời gian đọc bài viết. Chúng ta sẽ gặp lại nhau trong các bài viết sắp tới nhé 😆😁.

Chúc các bạn học tốt.

Có thể bạn thích ⚡
homiedev
About Me

Hi, I'm @devnav. Một người thích chia sẻ kiến thức, đặc biệt là về Frontend 🚀. Trang web này được tạo ra nhằm giúp các bạn học Frontend hiệu quả hơn 🎉😄.

Chúc các bạn tìm được kiến thức hữu ích trong blog này 😁😁.