আমাদের কাছে অবজেক্টের একটি বিন্যাস রয়েছে, যেগুলিতে আরও এইরকম নেস্টেড অবজেক্ট রয়েছে -
const arr = [{ id: 0, children: [] }, { id: 1, children: [{ id: 2, children: [] }, { id: 3, children: [{ id: 4, children: [] }] }] }];
আমাদের কাজ হল একটি পুনরাবৃত্ত ফাংশন লেখা, বলুন assignDepth() যা এই অ্যারেতে নেয় এবং প্রতিটি নেস্টেড অবজেক্টে ডেপথ প্রপার্টি বরাদ্দ করে। আইডি 0 এর অবজেক্টের মতোই ডেপথ 0 থাকবে, আইডি 1-এরও ডেপথ 1 থাকবে এবং যেহেতু আইডি 2 এবং আইডি 3 আইডি 1 এর ভিতরে নেস্ট করা আছে তাদের ডেপথ 1 এবং আইডি 4 থাকবে যা 3 আইডির ভিতরে আরও নেস্ট করা আছে এর ডেপথ 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 } ]