मान लीजिए, हमारे पास इस तरह की संख्याओं की एक नेस्टेड सरणी है -
const arr = [1, 4, 5, [ 5, 6, [ 6, 19, 5, [5] ], [5, 7, 6, [6, 8]], 8 ], 6];
हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो एक नेस्टेड सरणी लेता है, आदर्श रूप से किसी भी मनमाने स्तर पर नेस्टेड।
तब हमारे फ़ंक्शन को एक नया सरणी तैयार करना चाहिए और वापस करना चाहिए जो इनपुट सरणी का केवल एक चपटा संस्करण नहीं है।
फंक्शन लिखते समय हमें दो शर्तों से बचने के लिए कहा जाता है -
-
हम अपने कोड में कहीं भी किसी भी कस्टम रिकर्सिव फ़ंक्शन का उपयोग नहीं कर सकते हैं।
-
हम अपने कोड में Array.prototype.flat() पद्धति का उपयोग नहीं कर सकते।
उदाहरण
इसके लिए कोड होगा -
const arr = [1, 4, 5, [ 5, 6, [ 6, 19, 5, [5] ], [5, 7, 6, [6, 8]], 8 ], 6]; const flattenWithoutRecursion = (arr = []) => { const res = []; let level = 0, ref = [arr], counter = [0]; while(level >= 0){ if (counter[level] >= ref[level].length) { level--; continue; }; if (Array.isArray(ref[level][counter[level]])) { ref[level + 1] = ref[level][counter[level]] counter[level]++; level++; counter[level] = 0; continue; }; res.push(ref[level][counter[level]]); counter[level]++; }; return res; }; console.log(flattenWithoutRecursion(arr));
आउटपुट
और कंसोल में आउटपुट होगा -
[ 1, 4, 5, 5, 6, 6, 19, 5, 5, 5, 7, 6, 6, 8, 8, 6 ]