আমাদের কাছে একই অ্যারেতে এক থেকে একাধিক সম্পর্কের ডেটা রয়েছে। সংগঠনটি স্তর দ্বারা প্রতিষ্ঠিত হয়। একটি উপাদানের অভিভাবক সর্বদা নিজের থেকে এক স্তর বেশি এবং প্যারেন্টআইডি দ্বারা উল্লেখ করা হয়৷
আমাদের এই অ্যারে থেকে একটি মাল্টি-লেভেল অ্যারে পেতে হবে। সর্বোচ্চ স্তরের উপাদানগুলি প্রধান অ্যারে হবে, তাদের সন্তানদের সাব্যারে হিসাবে৷
৷যদি ইনপুট অ্যারে −
দ্বারা দেওয়া হয়const arr = [
{
_id: 100,
level: 3,
parentId: null,
},
{
_id: 101,
level: 2,
parentId: 100,
},
{
_id: 102,
level: 2,
parentId: 100,
},
{
_id: 103,
level: 2,
parentId: 100,
},
{
_id: 104,
level: 1,
parentId: 101,
},
{
_id: 105,
level: 1,
parentId: 102,
},
{
_id: 106,
level: 1,
parentId: 101,
},
{
_id: 107,
level: 1,
parentId: 103,
},
{
_id: 108,
level: 1,
parentId: 102,
},
{
_id: 109,
level: 1,
parentId: 103,
}
]; তারপর আউটপুট গঠন −
এর মত কিছু হওয়া উচিত100 | ------------------------------------ | | | 101 102 103 ------- ------ ------ | | | | | | 104 106 105 108 107 109
উদাহরণ
এর জন্য কোড হবে −
const arr = [{
_id: 100,
level: 3,
parentId: null,
},
{
_id: 101,
level: 2,
parentId: 100,
},
{
_id: 102,
level: 2,
parentId: 100,
},
{
_id: 103,
level: 2,
parentId: 100,
},
{
_id: 104,
level: 1,
parentId: 101,
},
{
_id: 105,
level: 1,
parentId: 102,
},
{
_id: 106,
level: 1,
parentId: 101,
},
{
_id: 107,
level: 1,
parentId: 103,
},
{
_id: 108,
level: 1,
parentId: 102,
},
{
_id: 109,
level: 1,
parentId: 103,
}];
const prepareTree = (arr = [], root = null) => {
let res;
const obj = Object.create(null);
arr.forEach(el => {
el.children = obj[el._id] && obj[el._id].children;
obj[el._id] = el;
if (el.parentId === root) {
res = el;
}
else {
obj[el.parentId] = obj[el.parentId] || {};
obj[el.parentId].children = obj[el.parentId].children || [];
obj[el.parentId].children.push(el);
}
});
return res;
};
console.log(JSON.stringify(prepareTree(arr), undefined, 4)); আউটপুট
এবং কনসোলে আউটপুট হবে −
{
"_id": 100,
"level": 3,
"parentId": null,
"children": [
{
"_id": 101,
"level": 2,
"parentId": 100,
"children": [
{
"_id": 104,
"level": 1,
"parentId": 101
},
{
"_id": 106,
"level": 1,
"parentId": 101
}
]
},
{
"_id": 102,
"level": 2,
"parentId": 100,
"children": [
{
"_id": 105,
"level": 1,
"parentId": 102
},
{
"_id": 108,
"level": 1,
"parentId": 102
}
]
},
{
"_id": 103,
"level": 2,
"parentId": 100,
"children": [
{
"_id": 107,
"level": 1,
"parentId": 103
},
{
"_id": 109,
"level": 1,
"parentId": 103
}
]
}
]
}