⊗jsPmRcMS 278 of 505 menu

Rekursija ir daugiamatės struktūros JavaScript

Duotas daugiamatis masivas savavališko lygio įdėjimo, pavyzdžiui, toks:

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

Kaip matote, šis masivas turi sudėtingą struktūrą, ir daroma prielaida, kad ši struktūra gali būti savavališka, o įdėjimo lygiai gali būti bet kokio gylio.

Tarkime, norime išvesti į konsolę visus primityvius (tai yra ne masyvus) mūsų masivo elementus. Šiuo atveju, norint iteruoti tokį masyvą, mums tiesiog nepavyks naudoti ciklų, nes masivas turi netaisyklingą struktūrą ir nežinomą įdėjimo lygį.

Tačiau tokio masyvo iteravimui labai patogu būtų naudoti rekursiją.

Pirmiausia sukurkime funkciją, į kurią parametru perduosime mūsų masyvą, o funkcijoje sukurkime ciklą mūsų masyvo iteravimui:

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

Mūsų sukurtas ciklas iteruos tik per pagrindinio masyvo elementus. Tai yra, iš pradžių jis išves 1, paskui [2, 7, 8], o po to [3, 4, [5, [6, 7]].

Dabar cikle skirkime primityvius elementus ir masyvus:

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

O dabar padarykime taip, kad jei mūsų elementas - masyvas, funkcija iškviestų pati save, perduodama parametru šį masyvą:

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

Duotas daugiamatis objektas savavališko lygio įdėjimo, pavyzdžiui, toks:

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

Naudodamiesi rekursija, išveskite visus primityvius šio objekto elementus į konsolę.

Duotas daugiamatis masyvas savavališko lygio įdėjimo, pavyzdžiui, toks:

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

Parašykite kodą, kuris išskleis mūsų daugiamatį masyvą į vienmatį. Pateiktam aukščiau masyvui tai atrodys taip:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti