Rekurzija i multidimenzionalne strukture u JavaScript-u
Dat je multidimenzionalni niz proizvoljnog nivoa ugnježdenosti, na primer, ovakav:
let arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
Kao što vidite, ovaj niz ima složenu strukturu, pri čemu se pretpostavlja da ta struktura može biti proizvoljna i nivoi ugnježdenosti mogu biti proizvoljno duboki.
Recimo da želimo da ispišemo u konzolu sve primitivne (to jest, one koji nisu nizovi) elemente našeg niza. U ovom slučaju, za iteraciju kroz takav niz jednostavno nećemo moći koristiti petlje, pošto niz ima nepravilnu strukturu i nepoznati nivo ugnježdenosti.
Međutim, za iteraciju kroz takav niz vrlo zgodno će biti koristiti rekurziju.
Za početak, napravićemo funkciju kojoj ćemo kao parametar proslediti naš niz, a u funkciji ćemo napraviti petlju za iteraciju kroz naš niz:
function func(arr) {
for (let elem of arr) {
console.log(elem);
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
Petlja koju smo napravili će iterirati samo kroz
elemente glavnog niza. To jest, prvo
će ispisati 1, zatim [2, 7, 8],
a potom [3, 4, [5, [6, 7]].
Sada ćemo u petlji razdvojiti primitivne elemente i elemente koji su nizovi:
function func(arr) {
for (let elem of arr) {
if (typeof elem == 'object') {
// element je niz
} else {
// element je primitiv
console.log(elem);
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
A sada ćemo učiniti da, ako je naš element niz, funkcija poziva samu sebe, prosleđujući taj niz kao parametar:
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]]]]);
Dat je multidimenzionalni objekat proizvoljnog nivoa ugnježdenosti, na primer, ovakav:
{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}
Pomoću rekurzije ispišite sve primitivne elemente ovog objekta u konzolu.
Dat je multidimenzionalni niz proizvoljnog nivoa ugnježdenosti, na primer, ovakav:
[1, [2, 7, 8], [3, 4, [5, [6, 7]]]]
Napišite kod koji će razviti naš multidimenzionalni niz u jednodimenzionalni. Za gore navedeni niz to će izgledati ovako:
[1, 2, 7, 8, 3, 4, 5, 6, 7]