⊗jsPmRcMS 278 of 505 menu

Rekursioon ja mitmemõõtmelised struktuurid JavaScriptis

Antud on mitmemõõtmeline massiiv suvalise pesastustasemega, näiteks selline:

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

Nagu näete, on sellel massiivil keeruline struktuur, eeldades, et see struktuur võib olla suvaline ja pesastustasemed võivad olla ükskõik kui sügavad.

Oletame, et soovime konsooli väljastada kõik primitiivsed (st mitte massiivid) meie massiivi elemendid. Sellisel juhul ei õnnestu meil sellise massiivi läbimiseks kasutada tsükleid, kuna massiivil on ebaregulaarne struktuur ja teadmata pesastustase.

Kuid sellise massiivi läbimiseks on väga mugav kasutada rekursiooni.

Alustuseks loome funktsiooni, kuhu parameetrina edastame oma massiivi, ja funktsiooni sees teeme tsükli meie massiivi läbimiseks:

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

Meie poolt loodud tsükkel läbib ainult põhimassiivi elemendid. See tähendab, et alguses väljastab see 1, siis [2, 7, 8], ja seejärel [3, 4, [5, [6, 7]].

Teeme nüüd tsüklis vahet primitiivsetel elementidel ja massiivi elementidel:

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

Ja nüüd teeme nii, et kui meie element on massiiv, siis funktsioon kutsuks iseennast välja, edastades parameetrina selle massiivi:

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

Antud on mitmemõõtmeline objekt suvalise pesastustasemega, näiteks selline:

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

Kasutades rekursiooni, väljastage kõik primitiivsed selle objekti elemendid konsooli.

Antud on mitmemõõtmeline massiiv suvalise pesastustasemega, näiteks selline:

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

Kirjutage kood, mis muudab meie mitmemõõtmelise massiivi ühemõõtmeliseks. Antud massiivi puhul näeb see välja järgmine:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu