মান লিয়ে, আমাদের একটি নেস্টেড সংখ্যার অ্যারে আছে -
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 ]