আমাদের কাছে একটি জটিল json ফাইল রয়েছে যা পরবর্তীতে একটি গাছ তৈরি করার জন্য এটিকে শ্রেণিবদ্ধ করার জন্য আমাদের জাভাস্ক্রিপ্টের সাথে পরিচালনা করতে হবে৷
JSON অ্যারের প্রতিটি এন্ট্রিতে −
থাকে-
id - একটি অনন্য আইডি,
-
parentId − প্যারেন্ট নোডের id (যা 0 হয় যদি নোডটি গাছের মূল হয়)
-
স্তর - গাছের গভীরতার স্তর
JSON ডেটা ইতিমধ্যেই "অর্ডার করা হয়েছে" এর অর্থ হল একটি এন্ট্রির নিজের উপরে একটি প্যারেন্ট নোড বা ভাই নোড থাকবে এবং নিজের নীচে একটি চাইল্ড নোড বা একটি ভাই নোড থাকবে৷
ইনপুট অ্যারে হল −
const arr = [
{
"id": "12",
"parentId": "0",
"text": "Man",
"level": "1",
"children": null
},
{
"id": "6",
"parentId": "12",
"text": "Boy",
"level": "2",
"children": null
},
{
"id": "7",
"parentId": "12",
"text": "Other",
"level": "2",
"children": null
},
{
"id": "9",
"parentId": "0",
"text": "Woman",
"level": "1",
"children": null
},
{
"id": "11",
"parentId": "9",
"text": "Girl",
"level": "2",
"children": null
}
]; এবং প্রত্যাশিত আউটপুট হল −
const output = [
{
"id": "12",
"parentId": "0",
"text": "Man",
"level": "1",
"children": [
{
"id": "6",
"parentId": "12",
"text": "Boy",
"level": "2",
"children": []
},
{
"id": "7",
"parentId": "12",
"text": "Other",
"level": "2",
"children": []
}
]
},
{
"id": "9",
"parentId": "0",
"text": "Woman",
"level": "1",
"children": [
{
"id": "11",
"parentId": "9",
"text": "Girl",
"level": "2",
"children": []
}
]
}
]; উদাহরণ
এর জন্য কোড হবে −
const arr = [
{
"id": "12",
"parentId": "0",
"text": "Man",
"level": "1",
"children": null
},
{
"id": "6",
"parentId": "12",
"text": "Boy",
"level": "2",
"children": null
},
{
"id": "7",
"parentId": "12",
"text": "Other",
"level": "2",
"children": null
},
{
"id": "9",
"parentId": "0",
"text": "Woman",
"level": "1",
"children": null
},
{
"id": "11",
"parentId": "9",
"text": "Girl",
"level": "2",
"children": null
}
];
const listToTree = (arr = []) => {
let map = {}, node, res = [], i;
for (i = 0; i < arr.length; i += 1) {
map[arr[i].id] = i;
arr[i].children = [];
};
for (i = 0; i < arr.length; i += 1) {
node = arr[i];
if (node.parentId !== "0") {
arr[map[node.parentId]].children.push(node);
}
else {
res.push(node);
};
};
return res;
};
console.log(JSON.stringify(listToTree(arr), undefined, 4)); আউটপুট
এবং কনসোলে আউটপুট হবে −
[
{
"id": "12",
"parentId": "0",
"text": "Man",
"level": "1",
"children": [
{
"id": "6",
"parentId": "12",
"text": "Boy",
"level": "2",
"children": []
},
{
"id": "7",
"parentId": "12",
"text": "Other",
"level": "2",
"children": []
}
]
},
{
"id": "9",
"parentId": "0",
"text": "Woman",
"level": "1",
"children": [
{
"id": "11",
"parentId": "9",
"text": "Girl",
"level": "2",
"children": []
}
]
}
]