जावास्क्रिप्ट में रिकर्सन और मल्टीडायमेंशनल स्ट्रक्चर्स
एक मल्टीडायमेंशनल ऐरे दी गई है जिसकी नेस्टिंग लेवल मनमाना है, उदाहरण के लिए, यह:
let arr = [
1,
[
2, 7, 8
],
[
3, 4, [5, [6, 7]],
]
];
जैसा कि आप देख सकते हैं, इस ऐरे की स्ट्रक्चर जटिल है, और यह माना जाता है कि यह स्ट्रक्चर मनमाना हो सकता है और नेस्टिंग के लेवल कितनी भी गहरी हो सकती हैं।
मान लीजिए कि हम अपने ऐरे के सभी प्रिमिटिव (यानी, ऐरे नहीं) एलिमेंट्स को कंसोल में प्रिंट करना चाहते हैं। इस स्थिति में ऐसे ऐरे को ट्रैवर्स करने के लिए हम लूप्स का उपयोग नहीं कर पाएंगे, क्योंकि ऐरे की स्ट्रक्चर अनियमित है और नेस्टिंग लेवल अज्ञात है।
हालांकि, ऐसे ऐरे को ट्रैवर्स करने के लिए रिकर्सन बहुत ही सुविधाजनक रहेगी।
शुरुआत में एक फंक्शन बनाते हैं, जिसमें पैरामीटर के रूप में हमारा ऐरे पास करेंगे, और फंक्शन में ऐरे को ट्रैवर्स करने के लिए लूप बनाएंगे:
function func(arr) {
for (let elem of arr) {
console.log(elem);
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
हमारे द्वारा बनाया गया लूप केवल
मुख्य ऐरे के एलिमेंट्स को ही ट्रैवर्स करेगा। यानी पहले
यह 1 प्रिंट करेगा, फिर [2, 7, 8],
और फिर [3, 4, [5, [6, 7]]।
आइए अब लूप में प्रिमिटिव एलिमेंट्स और ऐरे एलिमेंट्स को अलग करें:
function func(arr) {
for (let elem of arr) {
if (typeof elem == 'object') {
// एलिमेंट - ऐरे
} else {
// एलिमेंट - प्रिमिटिव
console.log(elem);
}
}
}
func([1, [2, 7, 8], [3, 4, [5, [6, 7]]]]);
और अब ऐसा करते हैं कि यदि हमारा एलिमेंट ऐरे है, तो फंक्शन स्वयं को कॉल करे, उस ऐरे को पैरामीटर के रूप में पास करते हुए:
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]]]]);
एक मल्टीडायमेंशनल ऑब्जेक्ट दिया गया है जिसकी नेस्टिंग लेवल मनमाना है, उदाहरण के लिए, यह:
{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}
रिकर्सन का उपयोग करके इस ऑब्जेक्ट के सभी प्रिमिटिव एलिमेंट्स को कंसोल में प्रिंट करें।
एक मल्टीडायमेंशनल ऐरे दिया गया है जिसकी नेस्टिंग लेवल मनमाना है, उदाहरण के लिए, यह:
[1, [2, 7, 8], [3, 4, [5, [6, 7]]]]
ऐसा कोड लिखें जो हमारे मल्टीडायमेंशनल ऐरे को वन-डायमेंशनल ऐरे में बदल दे। ऊपर दिए गए ऐरे के लिए यह इस तरह दिखेगा:
[1, 2, 7, 8, 3, 4, 5, 6, 7]