Javascript chuyển đổi mảng phẳng thành mảng lồng nhau
Hôm nay, tôi sẽ chỉ cho bạn hai cách để làm phẳng một mảng lồng nhau bất kể nó được lồng sâu đến đâu Show
1. Sử dụng phương pháp Mảng const flattenedArray = [].concat(...nestedArrays); 5
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình 2. Sử dụng đệ quy và giảm
Vào chế độ toàn màn hình Thoát chế độ toàn màn hình Bạn có thể kết hợp sức mạnh của một Mảng mới, hàm 6 và toán tử trải rộng để tạo một mảng mới với tất cả các đối tượng chứa trong đó
Điều này cũng giống như
Loại này có an toàn không?Bạn có thể nhận thấy rằng 7 không cung cấp loại an toàn - đây là do thiết kế vì các mảng trong JavaScript có thể chứa các đối tượng thuộc bất kỳ loại nào. Để đảm bảo rằng bạn chỉ nhận lại các mảng Person, bạn có thể chuyển mảng của mình thành loại 8 để cung cấp cho bạn thêm một lớp an toàn về loại
Khi nào thì sử dụng cái này
Khi nào không sử dụng cái nàyMặc dù cú pháp này thuận tiện và dễ nhớ, nhưng việc làm phẳng các mảng của các mảng không hoạt động ở đây - nó cũng chậm trên các mảng lớn. Để có giải pháp hiệu quả hơn, hãy xem câu trả lời StackOverflow này để biết câu trả lời tương tự trong JavaScript - nó thực hiện điều tương tự nhưng nhanh hơn và hoạt động trên các mảng được lồng sâu Chuyển đổi một mảng các mục có id và id gốc thành một cây lồng nhau theo cách `O(n)` hiệu quả. Chạy trong trình duyệt và nút xuất bản 1. 11. 0 • 10 tháng trướcxuất bản 1. 11. 0 10 tháng trước Đọc, viết hoặc kiểm tra thuộc tính lồng nhau của cấu trúc dữ liệu thông qua một chuỗi như 'my. lồng vào nhau. tài sản'. Nó hoạt động thông qua mảng và đối tượng. ' Yêu cầu. Chúng tôi có một mảng các đối tượng được lồng sâu. Chúng tôi muốn đưa tất cả các đối tượng lồng nhau vào mảng ở cấp cơ sở Sau đây là ví dụ về mảng 0 có nhiều người trong thư mục gốc và nhiều người trong số họ có mảng con chứa các thành viên khác
Chúng ta có thể làm phẳng mảng theo một trong các cách sau 1. Sử dụng JavaScript đơn giản (es6)
Ở đây, chúng tôi gọi đệ quy phương thức 1, phương thức này ánh xạ qua mảng ở mỗi cấp độ và trả về các đối tượng. Nếu bất kỳ đối tượng nào có con, nó sẽ đẩy chúng vào mảng 2 và chuyển chúng đến phương thức 1. Điều này tiếp tục đệ quy cho đến khi không tìm thấy con mới. Các kết quả được nối ở mỗi bước và kết quả cuối cùng được trả vềChúng ta có thể rút ngắn mã bằng cách loại bỏ biến 4 2Kết quả có tất cả các thành viên có trong mảng gốc như bên dưới 3Xóa trẻ emVì chúng tôi đang làm phẳng mảng, chúng tôi có thể xóa nút con, vì chúng tôi có thể không quan tâm đến việc giữ nó. Nhưng vì các thành viên được truy cập theo tham chiếu, nếu chúng tôi xóa tham chiếu con khỏi một thành viên, nó cũng sẽ bị xóa khỏi 0 ban đầu. Vì vậy, chúng tôi sử dụng toán tử lây lan 5Chúng tôi có thể xác minh rằng đối tượng ban đầu có giá trị con nguyên vẹn 6Kết quả 72. Sử dụng phương pháp Lodash flatMapDeepĐiều tương tự ở trên có thể được thực hiện chính xác hơn bằng cách sử dụng phương pháp như sau 8Chúng tôi vượt qua 1 làm đối số thứ hai của 7. Phương thức này trả về phần tử không có phần tử con, ngược lại trả về một mảng mới có phần tử đó và kết quả của hàm được gọi đệ quy là 7Để xóa các phần tử con trong mảng đã được làm phẳng mà vẫn giữ nguyên bản gốc, chúng ta cần trả về một bản sao của phần tử bằng cách sử dụng toán tử trải rộng trong đó các phần tử con bị xóa. Nhưng chúng tôi vẫn chuyển thành viên ban đầu cho 7 vì nó cần xử lý con 3Thuận lợiMột trong những lợi ích của việc làm phẳng một mảng là thời gian tra cứu nhanh, đặc biệt là trong các ứng dụng front-end như React, Angular hoặc Vue, nơi trạng thái có thể trở nên phức tạp và sâu sắc. Đối với một mảng lồng nhau gồm các đối tượng hiếm khi được cập nhật, chúng ta có thể giữ bản sao phẳng của nó và cập nhật nó sau mỗi lần thêm, cập nhật hoặc xóa được thực hiện trên bản gốc Bây giờ để tra cứu bất cứ thứ gì, chúng ta chỉ cần duyệt qua mảng phẳng trong thời gian O(n) thay vì đi sâu vào cây ban đầu trong mỗi lần tra cứu, điều này rất tốn kém Ví dụ. Để biết liệu các thành viên có tuổi nhỏ hơn hoặc bằng 2 có tồn tại trong 0 hay không, chúng ta có thể kiểm tra mảng phẳng bằng phương pháp như from lodash. Chúng ta cũng có thể lấy đối tượng thành viên
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 để làm phẳng mảng trong JavaScript mà không cần làm phẳng?Trong ES6, người ta có thể làm phẳng một mảng bằng cách sử dụng toán tử trải rộng . người ta có thể sử dụng hai phương pháp này để làm phẳng một mảng. Chúng tôi chuyển hai đối số cho phương thức áp dụng (_) - một mảng trống và mảng chúng tôi muốn làm phẳng (mảng), sau đó nối tất cả các phần tử (mảng con) được truyền vào một mảng trống.
Làm cách nào để tạo mảng lồng nhau trong JavaScript?Tạo một mảng lồng nhau. Cái này chỉ tương đương biến với mảng . Thứ hai là sử dụng phương thức mảng new Array(). Và cái cuối cùng là sử dụng Array() tương tự như Array() mới. Lưu ý rằng tất cả các phương pháp này đều mang lại kết quả như nhau.
Làm cách nào để làm phẳng JavaScript mảng đa chiều?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 |