Rekursioni dhe Strukturat Shumëdimensionale në JavaScript
Le të themi se kemi një varg shumëdimensional të një niveli arbitrar folezimi, për shembull, si ky:
let arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
Siç mund ta shihni, ky varg ka një strukturë komplekse, dhe supozohet se kjo strukturë mund të jetë arbitrare dhe nivelet e folezimit mund të jenë arbitrarisht të thella.
Supozoni se duam të shfaqim në konsolë të gjithë elementët primitivë (dmth, jo vargje) të vargut tonë. Në këtë rast, për të përsëritur një varg të tillë thjesht nuk do të mund të përdorim sythe, pasi vargu ka një strukturë të parregullt dhe një nivel të panjohur folezimi.
Sidoqoftë, për të përsëritur një varg të tillë do të jetë shumë i përshtatshëm të përdoret rekursioni.
Së pari, le të krijojmë një funksion të cilit si parametër do të kalojmë vargun tonë, dhe brenda funksionit të krijojmë një lak për të përsëritur vargun tonë:
function func(arr) {
for (let elem of arr) {
console.log(elem);
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
Laku që kemi krijuar do të përsërisë vetëm
elementët e vargut kryesor. Kjo do të thotë, fillimisht
do të shfaqë 1, pastaj [2, 7, 8],
dhe më pas [3, 4, [5, [6, 7]].
Tani, le të ndajmë në lak elementët primitivë dhe elementët-vargje:
function func(arr) {
for (let elem of arr) {
if (typeof elem == 'object') {
// elementi është varg
} else {
// elementi është primitiv
console.log(elem);
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
Dhe tani le ta bëjmë që nëse elementi ynë është një varg, funksioni të thirret vetveten, duke kaluar si parametër atë varg:
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]]]]);
Le të themi se kemi një objekt shumëdimensional të një niveli arbitrar folezimi, për shembull, si ky:
{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}
Duke përdorur rekursion, shfaqni të gjithë elementët primitivë të këtij objekti në konsolë.
Le të themi se kemi një varg shumëdimensional të një niveli arbitrar folezimi, për shembull, si ky:
[1, [2, 7, 8], [3, 4, [5, [6, 7]]]]
Shkruani kodin që do ta shndërrojë vargun tonë shumëdimensional në një varg njëdimensional. Për vargun e mësipërm kjo do të duket kështu:
[1, 2, 7, 8, 3, 4, 5, 6, 7]