Hướng dẫn javascript nested object to flat - đối tượng lồng nhau của javascript thành phẳng
Tôi cần phải làm phẳng một đối tượng lồng nhau. Cần một lớp lót. Không chắc thuật ngữ chính xác cho quá trình này là gì. Tôi có thể sử dụng JavaScript hoặc thư viện thuần túy, tôi đặc biệt thích dấu gạch dưới. Show Tôi có ...
Và tôi muốn ...
Tôi đã thử ...
Điều này hoạt động nhưng tôi cũng cần điều này để làm việc ...
Đã hỏi ngày 9 tháng 10 năm 2015 lúc 10:56Oct 9, 2015 at 10:56
danday74danday74danday74 48.3K47 Huy hiệu vàng213 Huy hiệu bạc261 Huy hiệu Đồng47 gold badges213 silver badges261 bronze badges 2
Bạn đi đây:
Tóm tắt: Tạo một loạt các đối tượng một tài sản, sau đó kết hợp tất cả chúng với 6.Điều này sử dụng các tính năng ES6 bao gồm 6 hoặc toán tử lây lan, nhưng nó đủ dễ dàng để viết lại không yêu cầu chúng.Đối với những người không quan tâm đến sự điên rồ một dòng và muốn có thể thực sự đọc nó (tùy thuộc vào định nghĩa của bạn về khả năng đọc):
Foxhoundn 1.7472 Huy hiệu vàng13 Huy hiệu bạc18 Huy hiệu đồng2 gold badges13 silver badges18 bronze badges Đã trả lời ngày 9 tháng 10 năm 2015 lúc 11:56Oct 9, 2015 at 11:56 4 Ví dụ có thể đọc được đơn giản hóa, không có sự phụ thuộc
Đặc trưng
Đã trả lời ngày 19 tháng 3 năm 2019 lúc 23:50Mar 19, 2019 at 23:50
WebberwebberWebber 4.1814 Huy hiệu vàng26 Huy hiệu bạc32 Huy hiệu Đồng4 gold badges26 silver badges32 bronze badges 2 Dưới đây là một lớp lót thực sự, điên rồ, đặt vật thể lồng nhau một cách đệ quy:
Phiên bản Multiline, giải thích:
Một ví dụ:
Chúc mừng một ngày một ngày! Đã trả lời ngày 4 tháng 5 năm 2020 lúc 22:20May 4, 2020 at 22:20
Muratgozelmuratgozelmuratgozel 2.15323 Huy hiệu bạc29 Huy hiệu đồng23 silver badges29 bronze badges 1 Phiên bản ES6 của tôi: 0Đã trả lời ngày 19 tháng 6 năm 2021 lúc 13:52Jun 19, 2021 at 13:52
Marco Lackovicmarco LackovicMarco Lackovic 5.6066 Huy hiệu vàng54 Huy hiệu bạc51 Huy hiệu Đồng6 gold badges54 silver badges51 bronze badges ES6 bản địa, đệ quy:One-liner 1Mở rộng 2Cách sử dụng 3Đã trả lời ngày 16 tháng 12 năm 2021 lúc 10:41Dec 16, 2021 at 10:41
Metaorymetaorymetaory 711 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges 1 Nó không hoàn toàn là một lớp lót, nhưng đây là một giải pháp không yêu cầu bất cứ điều gì từ ES6. Nó sử dụng phương pháp 8 của Undercore, có thể được trao đổi cho JQuery's. 4Đã trả lời ngày 15 tháng 10 năm 2015 lúc 21:36Oct 15, 2015 at 21:36
James Brierleyjames BrierleyJames Brierley 4.5691 Huy hiệu vàng21 Huy hiệu bạc38 Huy hiệu đồng1 gold badge21 silver badges38 bronze badges Tôi thích mã này vì nó dễ hiểu hơn một chút. EDIT: Tôi đã thêm một số chức năng tôi cần, vì vậy bây giờ nó khó hiểu hơn một chút. 5Demo https://stackblitz.com/edit/typescript-flatter Đối với Insinde A TypeScript Lớp sử dụng: 6Đã trả lời ngày 11 tháng 10 năm 2019 lúc 8:10Oct 11, 2019 at 8:10
NoobnoobNoob 5987 Huy hiệu bạc15 Huy hiệu Đồng7 silver badges15 bronze badges Đây là một chức năng tôi có trong các thư viện chung của mình cho chính xác mục đích này. Tôi tin rằng tôi đã nhận được điều này từ một câu hỏi tương tự Stackoverflow, nhưng không thể nhớ cái nào (chỉnh sửa: cách nhanh nhất để làm phẳng / không được làm cho các đối tượng JSON lồng nhau - cảm ơn Yoshi!) 7Điều này sau đó có thể được gọi như sau: 8Bạn cũng có thể nối chức năng này vào lớp chuỗi JavaScript tiêu chuẩn như sau: 9Trong đó, bạn có thể làm như sau: 0
Đã trả lời ngày 9 tháng 10 năm 2015 lúc 11:03Oct 9, 2015 at 11:03
Sk93Sk93Sk93 3.6143 Huy hiệu vàng36 Huy hiệu bạc65 Huy hiệu Đồng3 gold badges36 silver badges65 bronze badges 3 Dưới đây là các giải pháp vani hoạt động cho các mảng, nguyên thủy, biểu thức thường xuyên, chức năng, bất kỳ số cấp độ đối tượng lồng nhau nào và mọi thứ khác tôi có thể ném vào chúng. Đầu tiên ghi đè các giá trị thuộc tính theo cách mà bạn mong đợi từ 6. 1Thứ hai tích lũy các giá trị thành một mảng. 2Ngoài ra, xin vui lòng không bao gồm mã như thế này trong sản xuất vì rất khó để gỡ lỗi. Đã trả lời ngày 21 tháng 9 năm 2018 lúc 13:02Sep 21, 2018 at 13:02
PKFMPKFMpkfm 4533 Huy hiệu bạc7 Huy hiệu Đồng3 silver badges7 bronze badges Đây là phiên bản ES6 trong TypeScript. Nó có những câu trả lời tốt nhất được đưa ra ở đây và ở nơi khác. Một số tính năng:
3Một ví dụ: 4Chúc mừng một ngày một ngày!Oct 18, 2021 at 10:39
Đã trả lời ngày 4 tháng 5 năm 2020 lúc 22:20 5 6Muratgozelmuratgozel 7 62.15323 Huy hiệu bạc29 Huy hiệu đồng Phiên bản ES6 của tôi:Dec 16, 2021 at 20:11
Đã trả lời ngày 19 tháng 6 năm 2021 lúc 13:52Julian Marco Lackovicmarco Lackovic17 silver badges39 bronze badges 5.6066 Huy hiệu vàng54 Huy hiệu bạc51 Huy hiệu Đồngflatten only the first level of the object and merge duplicate object keys into an array: 9ES6 bản địa, đệ quy:Apr 8, 2020 at 12:03
Mở rộngJohannes Cách sử dụng2 silver badges3 bronze badges Đã trả lời ngày 16 tháng 12 năm 2021 lúc 10:41 0MetaorymetaoryJul 30 at 4:14
1711 Huy hiệu bạc3 Huy hiệu đồng Nó không hoàn toàn là một lớp lót, nhưng đây là một giải pháp không yêu cầu bất cứ điều gì từ ES6. Nó sử dụng phương pháp 8 của Undercore, có thể được trao đổi cho JQuery's.Nov 6, 2018 at 9:38
4Hau LeĐã trả lời ngày 15 tháng 10 năm 2015 lúc 21:361 silver badge5 bronze badges James Brierleyjames Brierley 24.5691 Huy hiệu vàng21 Huy hiệu bạc38 Huy hiệu đồngDec 10, 2019 at 14:27
2 Tôi biết nó rất dài, nhưng nó có thể hữu ích cho một số người trong tương lai Tôi đã sử dụng đệ quy 3Đã trả lời ngày 7 tháng 1 năm 2021 lúc 18:13Jan 7, 2021 at 18:13
Đây là tiện ích mở rộng TypeScript của tôi từ câu trả lời của @Webber. Cũng hỗ trợ ngày: 4Đã trả lời ngày 14 tháng 1 năm 2021 lúc 9:42Jan 14, 2021 at 9:42
RossrossRoss 2.4612 Huy hiệu vàng28 Huy hiệu bạc39 Huy hiệu đồng2 gold badges28 silver badges39 bronze badges 5Đã trả lời ngày 4 tháng 4 lúc 20:35Apr 4 at 20:35
1 Làm thế nào để bạn làm phẳng một đối tượng lồng nhau?Làm phẳng đối tượng lồng sâu có thể dễ dàng đạt được bằng cách sử dụng kỹ thuật đệ quy ... Lặp lại các khóa của đối tượng .. Nối tên phím con vào tên khóa cha .. Nếu giá trị của khóa con là một đối tượng, hãy gọi cùng một hàm .. Khác gán khóa cho giá trị mới .. Làm cách nào để làm cho một đối tượng phẳng trong JavaScript?Approach:.. Chúng tôi tạo một hàm gọi là đối tượng phẳng lấy đầu vào của một đối tượng và trả về một đối tượng .. Vòng lặp qua đối tượng và kiểm tra loại thuộc tính hiện tại: nếu nó thuộc loại đối tượng và nó không phải là một mảng, hãy gọi lại chức năng. Nếu không, lưu trữ giá trị trong kết quả .. Trả lại đối tượng .. Làm thế nào để tôi làm phẳng một mảng lồng nhau?Summary.. Sử dụng mảng.nguyên mẫu.phương thức flat () để phẳng một mảng với các mảng lồng nhau .. Sử dụng đối số độ sâu để chỉ định mức độ sâu của các mảng lồng nên được làm phẳng.Độ sâu là 1 theo mặc định .. Flat () cũng loại bỏ các lỗ trong mảng với các khe trống .. Làm thế nào để bạn làm phẳng một đối tượng trong một mảng?Bạn sử dụng phương thức Flat () để kết nối các phần tử con đệ quy thành một mảng duy nhất.Phương thức phẳng () lấy giá trị độ sâu làm tham số của nó, tùy chọn tùy thuộc vào độ sâu của mảng bạn muốn làm phẳng (concatenate).Phương thức phẳng () lấy 1 làm chiều sâu theo mặc định.use the flat() method for concatenating sub-arrays recursively into a single array. The flat() method takes a depth value as its parameter which is optional depending on the depth of the array you wish to flatten (concatenate). The flat() method takes in 1 as a depth by default. |