⊗jsPmRcMS 278 of 505 menu

Recursie și structuri multidimensionale în JavaScript

Se dă un array multidimensional cu un nivel arbitrar de imbricare, de exemplu, acesta:

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

După cum vedeți, acest array are o structură complexă, iar se presupune că această structură poate fi arbitrară și nivelurile de imbricare pot fi oricât de adânci.

Să presupunem că vrem să afișăm în consolă toate elementele primitive (adică nu array-uri) ale array-ului nostru. În acest caz, pentru a parcurge un astfel de array nu vom putea folosi bucle, deoarece array-ul are o structură neregulată și un nivel de imbricare necunoscut.

În schimb, pentru parcurgerea unui astfel de array este foarte convenabil să folosim recursia.

Pentru început, să facem o funcție care ia ca parametru array-ul nostru, iar în funcție să facem o buclă pentru parcurgerea array-ului:

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

Bucla pe care am făcut-o va parcurge doar elementele array-ului principal. Adică la început va afișa 1, apoi [2, 7, 8], și apoi [3, 4, [5, [6, 7]].

Acum, să separăm în buclă elementele-primitive de elementele-array-uri:

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

Și acum, să facem astfel încât dacă elementul nostru este un array, funcția să se autoapeleze, transmitând ca parametru acel array:

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

Se dă un obiect multidimensional cu un nivel arbitrar de imbricare, de exemplu, acesta:

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

Folosind recursia, afișați toate elementele primitive ale acestui obiect în consolă.

Se dă un array multidimensional cu un nivel arbitrar de imbricare, de exemplu, acesta:

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

Scrieți un cod care va transforma array-ul nostru multidimensional într-unul unidimensional. Pentru array-ul de mai sus va arăta astfel:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge