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

জাভাস্ক্রিপ্টে ফ্ল্যাট অ্যারে থেকে ট্রি অ্যারে তৈরি করা

আমাদের কাছে একটি জটিল JSON ফাইল আছে जिसे জাভাস্ক্রিপ্টে হ্যান্ডেল করে হায়ারার্কিক্যাল করতে হবে, যেন পরে ট্রি তৈরি করা যায়।

JSON অ্যারের প্রতিটি এন্ট্রিতে রয়েছে:

  • id - একটি ইউনিক আইডি
  • parentId - প্যারেন্ট নোডের আইডি (যে নোড রুট সেটার parentId 0)
  • level - ট্রিতে গভীরতার লেভেল

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": [] 
         } 
      ] 
   } 
]
  1. জাভাস্ক্রিপ্ট Array.from() মেথড

  2. জাভাস্ক্রিপ্টে Array.flat() মেথড

  3. জাভাস্ক্রিপ্টে Array.prototype.flat() মেথড

  4. জাভাস্ক্রিপ্টে ফ্ল্যাট অবজেক্ট অ্যারেকে ট্রি-তে রূপান্তর