Rekurzija i multidimenzionalne strukture u JavaScript-u

Dat je multidimenzionalni niz proizvoljnog nivoa ugnježdenosti, na primer, ovakav:

javascriptlet 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:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction 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]]]]);
Задание 1

Dat je multidimenzionalni objekat proizvoljnog nivoa ugnježdenosti, na primer, ovakav:

javascript{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.

Задание 2

Dat je multidimenzionalni niz proizvoljnog nivoa ugnježdenosti, na primer, ovakav:

javascript[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:

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