⊗jsPmRcMS 278 of 505 menu

Rekursija un daudzdimensiju struktūras JavaScript

Dots daudzdimensiju masīvs ar patvaļīgu līmeņu ligzdotību, piemēram, šāds:

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

Kā jūs redzat, šim masīvam ir sarežģīta struktūra, un tiek pieņemts, ka šī struktūra var būt patvaļīga un līmeņu ligzdotība var būt patvaļīgi dziļa.

Pieņemsim, ka mēs vēlamies izvadīt konsolē visus primitīvos (tas ir, ne masīvus) elementus no mūsu masīva. Šajā gadījumā, lai apstaigātu šādu masīvu, mums vienkārši neizdosies izmantot ciklus, jo masīvam ir neregulāra struktūra un nezināms ligzdotības līmenis.

Bet, lai apstaigātu šādu masīvu, ļoti ērti varēs izmantot rekursiju.

Sākumā izveidosim funkciju, kuras parametrā padodam mūsu masīvu, un funkcijā izveidosim ciklu mūsu masīva apstaigāšanai:

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

Mūsu izveidotais cikls apstaigās tikai pamatmasīva elementus. Tas ir, sākumā tas izvadīs 1, tad [2, 7, 8], un pēc tam [3, 4, [5, [6, 7]].

Tagad cilpā sāksim atšķirt primitīvos elementus un masīvu elementus:

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

Un tagad panāksim, ka, ja mūsu elements ir masīvs, funkcija izsaucas pati sevi, padodot kā parametru šo masīvu:

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

Dots daudzdimensiju objekts ar patvaļīgu līmeņu ligzdotību, piemēram, šāds:

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

Izmantojot rekursiju, izvadiet visus primitīvos elementus no šī objekta konsolē.

Dots daudzdimensiju masīvs ar patvaļīgu līmeņu ligzdotību, piemēram, šāds:

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

Uzrakstiet kodu, kas pārvērtīs mūsu daudzdimensiju masīvu par viendimensiju. Dotajam masīvam tas izskatīsies šādi:

[1, 2, 7, 8, 3, 4, 5, 6, 7]
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt