Urekebishaji na Miundo ya Dimensi Nyingi katika JavaScript
Hapa kuna safu ya dimensi nyingi ya kiwango cha kuingizwa kiholela, kwa mfano, kama hii:
let 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:
function 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:
function 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:
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]]]]);
Hapa kuna kitu cha dimensi nyingi cha kiwango cha kuingizwa kiholela, kwa mfano, kama hiki:
{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.
Hapa kuna safu ya dimensi nyingi ya kiwango cha kuingizwa kiholela, kwa mfano, kama hii:
[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:
[1, 2, 7, 8, 3, 4, 5, 6, 7]