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

জাভাস্ক্রিপ্টে লেভেল অনুযায়ী অ্যারে সর্টিং

আমাদের কাছে একটি ডেটা আছে যেখানে one-to-many রিলেশনশিপ একই অ্যারেতে রয়েছে। সংগঠন লেভেল দ্বারা প্রতিষ্ঠিত। একটি এলিমেন্টের প্যারেন্ট সর্বদা নিজের থেকে এক লেভেল উপরে থাকে এবং parentId দ্বারা রেফারেন্স করা হয়।

এই অ্যারেকর থেকে একটি মাল্টি-লেভেল অ্যারে তৈরি করতে হবে। সর্বোচ্চ লেভেলের এলিমেন্টগুলো হবে মূল অ্যারে, তাদের চাইল্ডরা সাব-অ্যারে হিসেবে থাকবে।

ইনপুট অ্যারে:

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

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

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

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