⊗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štinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել