কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে নেস্টেড অবজেক্টের ডেপথ লেভেল কাউন্ট করা


আমাদের অবজেক্টের একটি অ্যারে আছে, যেটির ভেতর আবার নেস্টেড অবজেক্ট রয়েছে এইরকম -

const arr = [{    id: 0, children: [] }, {       id: 1, children: [{       id: 2, children: [] }, {       id: 3, children: [{          id: 4, children: []       }]    }] }];

আমাদের কাজ হলো একটি রিকার্সিভ ফাংশন লিখা, নাম ধরি assignDepth() যা এই অ্যারেটি নিবে এবং প্রতিটি নেস্টেড অবজেক্টে depth প্রোপার্টি অ্যাসাইন করবে। যেন id 0-এর অবজেক্টে depth 0, id 1-এও depth 0, এবং যেহেতু id 2 এবং id 3, id 1-এর ভেতরে নেস্টেড, সেজন্য তাদের depth 1, আর id 4 যেহেতু id 3-এর ভেতরে আরও নেস্টেড, সেজন্য তার depth 2।

তাহলে এই ফাংশনের কোড লিখি। এটি একটি সিম্পল রিকার্সিভ ফাংশন যা সাব অবজেক্টগুলোতে বারবার ইটারেট করবে যতক্ষণ না অ্যারের শেষে পৌঁছায় -

উদাহরণ

const arr = [{    id: 0, children: [] }, {       id: 1, children: [{       id: 2, children: [] }, {       id: 3, children: [{          id: 4, children: []       }]    }] }]; const assignDepth = (arr, depth = 0, index = 0) => {    if(index < arr.length){       arr[index].depth = depth;       if(arr[index].children.length){          return assignDepth(arr[index].children, depth+1, 0);       };       return assignDepth(arr, depth, index+1);    };    return; }; assignDepth(arr); console.log(JSON.stringify(arr, undefined, 4));

আউটপুট

কনসোলে আউটপুট হবে -

[    {       "id": 0,       "children": [],       "depth": 0    },    {       "id": 1,       "children": [          {             "id": 2,             "children": [],             "depth": 1          },          {             "id": 3,             "children": [                {                   "id": 4,                   "children": [],                   "depth": 2                }             ],             "depth": 1          }       ],       "depth": 0    } ]

  1. জাভাস্ক্রিপ্টে অবজেক্টের অ্যারে ID দিয়ে গ্রুপ করা

  2. জাভাস্ক্রিপ্টে দুটি অবজেক্ট মার্জ করা

  3. জাভাস্ক্রিপ্টে ভ্যালু অনুযায়ী অবজেক্ট গ্রুপ করা

  4. জাভাস্ক্রিপ্টে নেস্টেড অ্যারে পেয়ার থেকে অবজেক্ট অ্যারে বানানো