JavaScript-এ রিকার্শন এবং মাল্টিডাইমেনশনাল স্ট্রাকচার

একটি মাল্টিডাইমেনশনাল অ্যারে দেওয়া আছে যার নেস্টিং এর স্তর নির্বিচারে, উদাহরণস্বরূপ, এইরকম:

javascriptlet arr = [
  1,
  [
    2, 7, 8
  ],
  [
    3, 4, [5, [6, 7]],
  ]
];

আপনি দেখতে পাচ্ছেন, এই অ্যারেটির একটি জটিল স্ট্রাকচার আছে, এবং এটি ধরে নেওয়া হয় যে এই স্ট্রাকচারটি নির্বিচারে হতে পারে এবং নেস্টিং এর স্তর যেকোনো গভীরতার হতে পারে।

ধরুন আমরা আমাদের অ্যারের সমস্ত প্রিমিটিভ (অর্থাৎ, অ্যারে নয়) এলিমেন্ট কনসোলে প্রিন্ট করতে চাই। এই ক্ষেত্রে, এইরকম অ্যারে ট্রাভার্স করার জন্য আমরা সহজেই লুপ ব্যবহার করতে পারব না, কারণ অ্যারের একটি অনিয়মিত স্ট্রাকচার আছে এবং নেস্টিং এর অজানা স্তর আছে।

তবে, এইরকম অ্যারে ট্রাভার্স করার জন্য রিকার্শন ব্যবহার করা খুবই সুবিধাজনক হবে।

প্রথমে একটি ফাংশন তৈরি করি, যেখানে আমরা প্যারামিটার হিসেবে আমাদের অ্যারে পাস করব, এবং ফাংশনের ভিতরে আমাদের অ্যারে ট্রাভার্স করার জন্য একটি লুপ তৈরি করব:

javascriptfunction 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]]।

এখন লুপের ভিতরে প্রিমিটিভ এলিমেন্ট এবং অ্যারে এলিমেন্ট আলাদা করি:

javascriptfunction 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]]]]);

এবং এখন এমন করি যাতে যদি আমাদের এলিমেন্ট একটি অ্যারে হয়, ফাংশনটি নিজেকেই কল করে, এই অ্যারেটি প্যারামিটার হিসেবে পাস করে:

javascriptfunction 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]]]]);
Задание 1

একটি মাল্টিডাইমেনশনাল অবজেক্ট দেওয়া আছে যার নেস্টিং এর স্তর নির্বিচারে, উদাহরণস্বরূপ, এইরকম:

javascript{a: 1, b: {c: 2, d: 3, e: 4}, f: {g: 5, j: 6, k: {l: 7, m: {n: 8, o: 9}}}}

রিকার্শন ব্যবহার করে এই অবজেক্টের সমস্ত প্রিমিটিভ এলিমেন্ট কনসোলে প্রিন্ট করুন।

Задание 2

একটি মাল্টিডাইমেনশনাল অ্যারে দেওয়া আছে যার নেস্টিং এর স্তর নির্বিচারে, উদাহরণস্বরূপ, এইরকম:

javascript[1, [2, 7, 8], [3, 4, [5, [6, 7]]]]

এমন একটি কোড লিখুন যা আমাদের মাল্টিডাইমেনশনাল অ্যারেকে একটি ওয়ান-ডাইমেনশনাল অ্যারেতে রূপান্তরিত করবে। উপরে উল্লিখিত অ্যারের জন্য এটি এইরকম দেখাবে:

javascript[1, 2, 7, 8, 3, 4, 5, 6, 7]