আমাদের অবজেক্টের একটি অ্যারে আছে, যেটির ভেতর আবার নেস্টেড অবজেক্ট রয়েছে এইরকম -
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 } ]