কম্পিউটার

জাভাস্ক্রিপ্টে রিকারশন ব্যবহার করে অবজেক্ট কী আনা হচ্ছে


আমাদের কাছে একটি অবজেক্ট আছে যার সাথে অন্যান্য অবজেক্ট এর প্রোপার্টি মান, এটি 2-3 লেভেলে বা তারও বেশি নেস্টেড।

এখানে নমুনা বস্তু −

const people = {
   Ram: {
      fullName: 'Ram Kumar',
      details: {
         age: 31,
         isEmployed: true
      }
   },
   Sourav: {
      fullName: 'Sourav Singh',
      details: {
         age: 22,
         isEmployed: false
      }
   },
   Jay: {
      fullName: 'Jay Grewal',
      details: {
         age: 26,
         isEmployed: true
      }
   }
}

আমাদের কাজ হল একটি ফাংশন লেখা যা এই অবজেক্ট এবং একটি স্ট্রিং গ্রহণ করে, সেই স্ট্রিংটির জন্য পুরো অবজেক্টটিকে কী হিসাবে অনুসন্ধান করে এবং একটি অ্যারে প্রদান করে যাতে স্ট্রিংয়ের সাথে মিলে যাওয়া সমস্ত কীগুলির মান রয়েছে৷

চলুন ফাংশনটিকে recursiveSearch() বলি, এই পরিস্থিতি মোকাবেলার সবচেয়ে উপযুক্ত উপায় হবে, নেস্টিং দেওয়া।

সুতরাং এই ফাংশনের জন্য পূর্ণ কোড recursiveSearch() হবে −

const people = {
   Ram: {
      fullName: 'Ram Kumar',
      details: {
         age: 31,
         isEmployed: true
      }
   },
   Sourav: {
      fullName: 'Sourav Singh',
      details: {
         age: 22,
         isEmployed: false
      }
   },
   Jay: {
      fullName: 'Jay Grewal',
      details: {
         age: 26,
         isEmployed: true
      }
   }
}
const recursiveSearch = (obj, searchKey, results = []) => {
   const r = results;
   Object.keys(obj).forEach(key => {
      const value = obj[key];
      if(key === searchKey && typeof value !== 'object'){
         r.push(value);
      }else if(typeof value === 'object'){
         recursiveSearch(value, searchKey, r);
      }
   });
   return r;
};
console.log(recursiveSearch(people, 'age'));

এই ফাংশনে, প্রথমে আমরা মূল বস্তুর উপর পুনরাবৃত্তি করি এবং যখনই আমরা একটি নেস্টিংয়ের সম্মুখীন হই তখনই আমরা পছন্দসই কীটির জন্য সাব অবজেক্ট অনুসন্ধানের উপর পুনরাবৃত্তি করি, যদি আমরা পছন্দসই কীটি খুঁজে পাই, আমরা অবিলম্বে ফলাফল অ্যারেতে এর মান রেকর্ড করি এবং শেষ যখন আমরা পুনরাবৃত্ত শেষ করি, আমরা ফলাফলের অ্যারে ফেরত দিই যাতে কাঙ্খিত মান রয়েছে।

এই ফাংশনের সময় জটিলতা হল O(mn) যেখানে মূল বস্তুর ভিতরে চাইল্ড অবজেক্টের সংখ্যা এবং m হল নেস্টিংয়ের গভীরতম স্তর৷

এই কোডের জন্য কনসোলে আউটপুট হবে −

[ 31, 22, 26 ]

  1. জাভাস্ক্রিপ্ট অ্যারেবাফার অবজেক্ট

  2. কিভাবে জাভাস্ক্রিপ্ট ব্যবহার করে একটি URL অবজেক্ট তৈরি করবেন?

  3. জাভাস্ক্রিপ্ট ব্যবহার করে অ্যারেতে নেস্টেড অবজেক্টের মানের সমষ্টি

  4. JavaScript-এ Object.keys().map() VS Array.map()