Urekebishaji na Miundo ya Dimensi Nyingi katika JavaScript

Hapa kuna safu ya dimensi nyingi ya kiwango cha kuingizwa kiholela, kwa mfano, kama hii:

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

Kama unavyoona, safu hii ina muundo mgumu, na inachukuliwa kuwa muundo huu unaweza kuwa wa kiholela na viwango vya kuingizwa vinaweza kuwa vikali kadiri.

Tuseme tunataka kuonyesha kwenye konzi vipengele vyote vya msingi (yaani, sio safu) za safu yetu. Katika hali hii, kwa upitishaji wa safu kama hiyo haitatuwezekana kutumia vitanzi, kwa sababu safu ina muundo usiofaa na kiwango kisichojulikana cha kuingizwa.

Lakini kwa upitishaji wa safu kama hiyo itakuwa rahisi sana kutumia urekebishaji.

Kwanza tutatengeneza kitendakazi, ambacho parametri tutapeana safu yetu, na kwenye kitendakazi tutatengeneza kitanzi kwa upitishaji wa safu yetu:

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

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

Kitanzi tulichotengeneza kitapitia tu vipengele vya safu kuu. Yaani kwanza kitaonyesha 1, kisha [2, 7, 8], na kisha [3, 4, [5, [6, 7]].

Sasa tufanye kwenye kitanzi tutenganishe vipengele vya msingi na vipengele vya safu:

javascriptfunction func(arr) {
  for (let elem of arr) {
    if (typeof elem == 'object') {
      // kipengele - safu
    } else {
      // kipengele - msingi
      console.log(elem);
    }
  }
}

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

Na sasa tufanye ili ikiwa kipengele chetu ni safu, kitendakazi kijitaje mwenyewe, kikipeleka kama parameta safu hiyo:

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

Hapa kuna kitu cha dimensi nyingi cha kiwango cha kuingizwa kiholela, kwa mfano, kama hiki:

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

Kwa kutumia urekebishaji onyesha vipengele vyote vya msingi vya kitu hiki kwenye konzi.

Задание 2

Hapa kuna safu ya dimensi nyingi ya kiwango cha kuingizwa kiholela, kwa mfano, kama hii:

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

Andika msimbo ambao utaifungua safu yetu ya dimensi nyingi kuwa safu ya dimensi moja. Kwa safu iliyo hapo juu hitaonekana kama hivi:

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