Làm phẳng mảng của mảng JavaScript

Việc làm phẳng một mảng trong #JavaScript luôn phức tạp. không còn nữa. ES2019 đã giới thiệu một phương thức mới giúp làm phẳng các mảng. Và có một tham số "độ sâu", vì vậy bạn có thể chuyển BẤT KỲ cấp độ lồng nhau nào. TUYỆT VỜI 🤩

const nested = [['📦', '📦'], ['📦']];

const flattened = nested.flat[];

console.log[flattened];
// ['📦', '📦', '📦']

Đặt thông số
array.flat[];
1

Đây là cú pháp cho phương pháp này

array.flat[];

Theo mặc định,

array.flat[];
2 sẽ chỉ làm phẳng sâu một lớp. Nói cách khác,
array.flat[];
1 là
array.flat[];
4

array.flat[];

// Same as

array.flat[1];

Mảng lồng nhau sâu hơn

Điều tuyệt vời là phương pháp này cũng hoạt động vượt quá 1 cấp độ sâu. Bạn chỉ cần đặt tham số

array.flat[];
1 thích hợp để làm phẳng các mảng lồng nhau sâu hơn

________số 8

Mảng lồng nhau vô hạn

Giả sử, bạn muốn đi sâu vô tận. Không thành vấn đề, chúng ta cũng có thể làm điều đó. Chỉ cần vượt qua

array.flat[];
6

array.flat[];
0

Mảng có khe trống

Một điều thú vị khác mà

array.flat[];
2 có thể làm là loại bỏ các ô trống trong một mảng

array.flat[];
2

Hỗ trợ trình duyệt

array.flat[];
8 là một tính năng siêu mới được giới thiệu trong ES2019, vì vậy hãy quên Internet Explorer hoặc Edge đi. Nhưng không có gì ngạc nhiên 😅

Trình duyệt Chrome✅Firefox✅Safari✅Edge✅Internet Explorer❌

Giải pháp thay thế

Vì hỗ trợ không lớn. Dưới đây là một số giải pháp thay thế

Giải pháp ES6

Đây là một giải pháp ES6. Điều này chỉ hoạt động đối với mảng lồng nhau một cấp

array.flat[];
4

Giải pháp trình duyệt cũ hơn

Đây là một cho trình duyệt cũ hơn và ES6 trước. Một lần nữa, điều này chỉ hoạt động đối với mảng lồng nhau một cấp

array.flat[];
5

đệ quy

Đối với các mảng có lồng sâu hơn, bạn có thể sử dụng đệ quy. Đây là giải pháp từ

array.flat[];
6

Đầu vào của cộng đồng

@willvincent. Mặc dù vậy, đáng chú ý, phẳng [] không loại bỏ các giá trị rỗng, chỉ các vị trí trống theo nghĩa đen

array.flat[];
7

Q. Tôi đoán là đường cú pháp chỉ dành cho

array.flat[];
9?

  • @bradkovach. Không cú pháp đường. Flat dùng để thu gọn các mảng đa chiều.
    array.flat[];
    
    // Same as
    
    array.flat[1];
    
    0 trở thành
    array.flat[];
    
    // Same as
    
    array.flat[1];
    
    1
    Xóa các chỉ số không xác định là tác dụng phụ của quá trình làm phẳng.

Q.

array.flat[];
2 có duy trì việc đánh số chỉ mục không?

  • @bradkovach. Nó dùng để làm phẳng các mảng lồng nhau đến một độ sâu xác định. Loại bỏ các chỉ mục trống là tác dụng phụ của quá trình làm phẳng

💬 Có bất kỳ trường hợp sử dụng thú vị nào của Array. bằng phẳng[]?

  • @hocine_abdellatif. Một trường hợp sử dụng hơi xa nhưng có lẽ đáng nói, trong học máy, ví dụ nếu bạn có một mảng các thế hệ, mỗi thế hệ là một mảng sinh viên, nếu bạn muốn có mọi sinh viên từ mọi thế hệ, phương pháp này sẽ rất thiết thực

  • @devjacks. Tôi đã viết một bài kiểm tra mã với một vấn đề như thế này vài tuần trước. Điều này sẽ làm cho cuộc sống của tôi dễ dàng hơn rất nhiều. 😂

    Làm cách nào để làm phẳng một mảng các mảng trong JavaScript?

    Các phương pháp khác nhau để làm phẳng một mảng .
    a. Sử dụng concat[] và apply[] let flatArray = []. concat. .
    b. Sử dụng toán tử trải rộng. hãy để phẳngArray = []. concat[. mảng]; . [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 ].
    c. Sử dụng phương pháp rút gọn. hãy để phẳngArray = mảng. giảm [[acc, curVal] => { trả lại acc

    Làm cách nào để làm phẳng các mảng lồng nhau trong JavaScript?

    Mảng. phương thức phẳng[] chủ yếu được sử dụng để làm phẳng một mảng JavaScript lồng nhau. Nó chấp nhận mức độ sâu làm đối số và trả về một mảng mới trong đó tất cả các phần tử của mảng con được nối theo độ sâu đã chỉ định.

    Làm cách nào để tạo một mảng từ nhiều mảng trong JavaScript?

    Sử dụng phương thức concat . Trong đoạn mã trên, chúng tôi đã hợp nhất ba mảng thành một mảng trống. Điều này sẽ dẫn đến việc hợp nhất nhiều mảng thành một mảng mới.

    Làm cách nào để tham gia mảng của mảng trong JavaScript?

    Phương thức concat[] nối [nối] hai hoặc nhiều mảng. Phương thức concat[] trả về một mảng mới, chứa các mảng đã nối. Phương thức concat[] không thay đổi các mảng hiện có.

Chủ Đề