⊗jsPmRcMS 278 of 505 menu

Αναδρομή και Πολυδιάστατες Δομές στο JavaScript

Δίνεται ένας πολυδιάστατος πίνακας αυθαίρετου επιπέδου ένθεσης, για παράδειγμα, όπως ο ακόλουθος:

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

Όπως βλέπετε, αυτός ο πίνακας έχει μια σύνθετη δομή, και υποτίθεται ότι αυτή η δομή μπορεί να είναι αυθαίρετη και τα επίπεδα ένθεσης μπορεί να είναι όσο βαθιά θέλετε.

Ας υποθέσουμε ότι θέλουμε να τυπώσουμε στην κονσόλα όλα τα πρωτόγονα (δηλαδή, μη πίνακες) στοιχεία του πίνακα μας. Σε αυτήν την περίπτωση, για την επανάληψη ενός τέτοιου πίνακα απλά δεν θα μπορέσουμε να χρησιμοποιήσουμε βρόχους, καθώς ο πίνακας έχει μια ακανόνιστη δομή και άγνωστο βάθος ενθέτου.

Ωστόσο, για την επανάληψη ενός τέτοιου πίνακα θα είναι πολύ βολικό να χρησιμοποιήσουμε αναδρομή.

Αρχικά, ας φτιάξουμε μια συνάρτηση, στην οποία ως παράμετρο θα περνάμε τον πίνακα μας, και μέσα στη συνάρτηση θα φτιάξουμε έναν βρόχο για την επανάληψη του πίνακα μας:

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

Ο βρόχος που φτιάξαμε θα επαναλαμβάνει μόνο τα στοιχεία του κύριου πίνακα. Δηλαδή, αρχικά θα εμφανίσει 1, μετά [2, 7, 8], και μετά [3, 4, [5, [6, 7]].

Τώρα ας ξεχωρίσουμε στον βρόχο τα πρωτόγονα στοιχεία και τα στοιχεία-πίνακες:

function func(arr) { for (let elem of arr) { if (typeof elem == 'object') { // στοιχείο - πίνακας } else { // στοιχείο - πρωτόγονο console.log(elem); } } } func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Και τώρα ας κάνουμε έτσι ώστε, εάν το στοιχείο μας είναι πίνακας, η συνάρτηση να καλεί τον εαυτό της, περνώντας ως παράμετρο αυτόν τον πίνακα:

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]]]]);

Δίνεται ένα πολυδιάστατο αντικείμενο αυθαίρετου επιπέδου ένθεσης, για παράδειγμα, όπως το ακόλουθο:

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

Χρησιμοποιώντας αναδρομή, εμφανίστε όλα τα πρωτόγονα στοιχεία αυτού του αντικειμένου στην κονσόλα.

Δίνεται ένας πολυδιάστατος πίνακας αυθαίρετου επιπέδου ένθεσης, για παράδειγμα, όπως ο ακόλουθος:

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

Γράψτε κώδικα που θα μετατρέψει τον πολυδιάστατο πίνακα μας σε μονοδιάστατο. Για τον παραπάνω πίνακα αυτό θα φαίνεται ως εξής:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη