⊗jsPmRcMS 278 of 505 menu

Đệ quy và cấu trúc đa chiều trong JavaScript

Cho một mảng đa chiều với mức độ lồng nhau tùy ý, ví dụ, như thế này:

let arr = [ 1, [ 2, 7, 8 ], [ 3, 4, [5, [6, 7]], ] ];

Như bạn có thể thấy, mảng này có một cấu trúc phức tạp, và giả định rằng cấu trúc này có thể là tùy ý và các mức độ lồng nhau có thể sâu đến mức bất kỳ.

Giả sử chúng ta muốn in ra tất cả các phần tử nguyên thủy (tức là không phải mảng) của mảng chúng ta. Trong trường hợp này, để duyệt qua mảng như vậy chúng ta đơn giản không thể sử dụng vòng lặp, vì mảng có cấu trúc không đều và mức độ lồng nhau không xác định.

Tuy nhiên, để duyệt qua mảng như vậy, sử dụng đệ quy sẽ rất thuận tiện.

Đầu tiên, hãy tạo một hàm, trong đó tham số sẽ truyền vào mảng của chúng ta, và trong hàm chúng ta sẽ tạo một vòng lặp để duyệt qua mảng:

function func(arr) { for (let elem of arr) { console.log(elem); } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Vòng lặp mà chúng ta tạo sẽ chỉ duyệt qua các phần tử của mảng chính. Tức là đầu tiên nó sẽ in ra 1, sau đó [2, 7, 8], và cuối cùng [3, 4, [5, [6, 7]].

Bây giờ hãy phân biệt trong vòng lặp các phần tử nguyên thủy và các phần tử là mảng:

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { // phần tử là mảng } else { // phần tử là nguyên thủy console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Và bây giờ hãy làm sao cho nếu phần tử của chúng ta là một mảng, hàm sẽ gọi lại chính nó, truyền tham số là mảng đó:

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { func(elem); } else { console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Cho một đối tượng đa chiều với mức độ lồng nhau tùy ý, ví dụ, như thế này:

{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}

Sử dụng đệ quy, in tất cả các phần tử nguyên thủy của đối tượng này ra console.

Cho một mảng đa chiều với mức độ lồng nhau tùy ý, ví dụ, như thế này:

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

Viết mã để chuyển đổi mảng đa chiều của chúng ta thành mảng một chiều. Đối với mảng đã cho ở trên nó sẽ trông như thế này:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Tiếng Việt
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối