Rekursion og multidimensionelle strukturer i JavaScript

Givet et multidimensionelt array med en vilkårlig niveau af indlejring, for eksempel som dette:

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

Som du kan se, har dette array en kompleks struktur, og det antages, at denne struktur kan være vilkårlig, og niveauerne af indlejring kan være uendeligt dybe.

Lad os sige, at vi ønsker at udskrive alle primitive (altså ikke arrays) elementer af vores array til konsollen. I dette tilfælde vil vi simpelthen ikke kunne bruge loops til at gennemgå et sådant array, fordi arrayet har en uregelmæssig struktur og et ukendt indlejringsniveau.

Derimod vil rekursion være meget egnet til at gennemgå et sådant array.

Lad os starte med at lave en funktion, hvor vi som parameter sender vores array, og i funktionen laver vi et loop for at gennemgå vores array:

javascriptfunction func(arr) {
  for (let elem of arr) {
    console.log(elem);
  }
}

func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Det loop, vi har lavet, vil kun gennemgå elementerne i hovedarrayet. Det vil først udskrive 1, derefter [2, 7, 8], og derefter [3, 4, [5, [6, 7]].

Lad os nu i løkken skelne mellem primitive elementer og array-elementer:

javascriptfunction func(arr) {
  for (let elem of arr) {
    if (typeof elem == 'object') {
      // elementet er et array
    } else {
      // elementet er en primitiv værdi
      console.log(elem);
    }
  }
}

func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);

Og lad os nu gøre sådan, at hvis vores element er et array, kalder funktionen sig selv, og sender dette array som parameter:

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

Givet et multidimensionelt objekt med et vilkårligt niveau af indlejring, for eksempel som dette:

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

Brug rekursion til at udskrive alle primitive elementer af dette objekt til konsollen.

Задание 2

Givet et multidimensionelt array med et vilkårligt niveau af indlejring, for eksempel som dette:

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

Skriv kode, der vil udflade vores multidimensionelle array til et endimensionelt array. For arrayet vist ovenfor vil det se sådan ud:

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