⊗jsPmRcMS 278 of 505 menu

Rekursio ja moniulotteiset rakenteet JavaScriptissä

Annettu taulukko on moniulotteinen mielivaltaisella sisäkkäisyystasolla, esimerkiksi tällainen:

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

Kuten näet, tällä taulukolla on monimutkainen rakenne, ja oletetaan, että tämä rakenne voi olla mielivaltainen ja sisäkkäisyystasot voivat olla miten syviä tahansa.

Oletetaan, että haluamme tulostaa konsoliin kaikki primitiiviset (eli eivät taulukot) elementit taulukostamme. Tässä tapauksessa tällaisen taulukon läpikäyntiin emme yksinkertaisesti pysty käyttämään silmukoita, koska taulukolla on epäsäännöllinen rakenne ja tuntematon sisäkkäisyystaso.

Sen sijaan tällaisen taulukon läpikäyntiin on erittäin kätevää käyttää rekursiota.

Aluksi teemme funktion, jonka parametrina annamme taulukkomme, ja funktiossa teemme silmukan taulukkomme läpikäyntiä varten:

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

Tekemämme silmukka käy läpi vain päätaulukon elementit. Eli aluksi se tulostaa 1, sitten [2, 7, 8], ja sitten [3, 4, [5, [6, 7]].

Erotellaan nyt silmukassa primitiivielementit ja taulukkoelementit:

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

Ja nyt tehdään niin, että jos elementtimme on taulukko, funktio kutsuu itseään, välittäen parametrina tämän taulukon:

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

Annettu moniulotteinen olio mielivaltaisella sisäkkäisyystasolla, esimerkiksi tällainen:

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

Käytä rekursiota tulostaaksesi kaikki primitiiviset elementit tästä oliosta konsoliin.

Annettu moniulotteinen taulukko mielivaltaisella sisäkkäisyystasolla, esimerkiksi tällainen:

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

Kirjoita koodi, joka muuttaa moniulotteisen taulukkomme yksiulotteiseksi. Annettua taulukkoa varten se näyttää tältä:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää