কম্পিউটার

জাভাস্ক্রিপ্ট অ্যারে স্তর অনুসারে সাজানো


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

আমাদের এই অ্যারে থেকে একটি মাল্টি-লেভেল অ্যারে পেতে হবে। সর্বোচ্চ স্তরের উপাদানগুলি প্রধান অ্যারে হবে, তাদের সন্তানদের সাব্যারে হিসাবে৷

যদি ইনপুট অ্যারে −

দ্বারা দেওয়া হয়
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. JavaScript array.values()

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

  3. জাভাস্ক্রিপ্টে অ্যারে স্লাইস()

  4. জাভাস্ক্রিপ্টে অ্যারে শিফট()