কম্পিউটার

দুটি বৈশিষ্ট্য জাভাস্ক্রিপ্ট দ্বারা অ্যারেতে গোষ্ঠীর মান


আমাদের কাছে এই ধরনের বস্তুর একটি অ্যারে আছে -

const arr = [
   { value: 12, gap: 1 },
   { value: 13, gap: 1 },
   { value: 14, gap: 1 },
   { value: 15, gap: 1 },
   { value: 19, gap: 2 },
   { value: 21, gap: 1 },
   { value: 22, gap: 1 },
   { value: 23, gap: 1 },
   { value: 27, gap: 1 },
   { value: 31, gap: 4 },
   { value: 35, gap: 4 },
   { value: 39, gap: 4 },
   { value: 43, gap: 1 },
   { value: 50, gap: 1 },
   { value: 51, gap: 1 },
   { value: 52, gap: 1 },
   { value: 55, gap: 1 },
   { value: 57, gap: 1 },
];

আমাদের এমন একটি ফাংশন লিখতে হবে যা এই অ্যারেতে নেয় এবং একটি নতুন অ্যারে ফেরত দেয় যেখানে সমস্ত পরপর অবজেক্ট যার মান পূর্ববর্তী অবজেক্টের মানের সমষ্টির সমান এবং গ্যাপমগুলিকে একটি সাব্যারেতে একসাথে গোষ্ঠীবদ্ধ করতে হবে৷

উদাহরণ স্বরূপ − 12 মানের অবজেক্টের গ্যাপ 1 আছে এবং এর পরের অবজেক্টের মান 13 আছে, তাই সেগুলিকে অবশ্যই গোষ্ঠীবদ্ধ করতে হবে এবং তাদের সাথে 14 এবং 15 মান সহ অবজেক্ট এবং এইরকম।

এখন, সমস্যাটি বোঝার সাথে, আসুন এই সমস্যার জন্য কোড লেখার দিকে এগিয়ে যাই। কাঙ্খিত অ্যারে তৈরি করতে আমরা Array.prototype.reduce() পদ্ধতি ব্যবহার করব -

উদাহরণ

const arr = [
   { value: 12, gap: 1 },
   { value: 13, gap: 1 },
   { value: 14, gap: 1 },
   { value: 15, gap: 1 },
   { value: 19, gap: 2 },
   { value: 21, gap: 1 },
   { value: 22, gap: 1 },
   { value: 23, gap: 1 },
   { value: 27, gap: 1 },
   { value: 31, gap: 4 },
   { value: 35, gap: 4 },
   { value: 39, gap: 4 },
   { value: 43, gap: 1 },
   { value: 50, gap: 1 },
   { value: 51, gap: 1 },
   { value: 52, gap: 1 },
   { value: 55, gap: 1 },
   { value: 57, gap: 1 },
];
const groupArray = arr => {
   return arr.reduce((acc, val, ind, array) => {
      // the accumulated data and lastIndex of accumulated data
      const { data, currentIndex } = acc;
      // the current object properties
      const { value, gap } = val;
      // the previous object properties
      const v = arr[ind-1]?.value;
      const g = arr[ind-1]?.gap;
      if(ind === 0 || value !== v + g){
         // recording the index of last object and pushing new subarray
         const index = data.push([val]) - 1;
         return { data, currentIndex: index };
      };
      data[currentIndex].push(val);
      return { data, currentIndex };
   }, {
      data: [],
      currentIndex: 0
   }).data;
}
console.log(groupArray(arr));

আউটপুট

কনসোলে আউটপুট হবে −

[
   [
      { value: 12, gap: 1 },
      { value: 13, gap: 1 },
      { value: 14, gap: 1 },
      { value: 15, gap: 1 }
   ],
   [
      { value: 19, gap: 2 },
      { value: 21, gap: 1 },
      { value: 22, gap: 1 },
      { value: 23, gap: 1 }
   ],
   [ { value: 27, gap: 1 } ],
   [
      { value: 31, gap: 4 },
      { value: 35, gap: 4 },
      { value: 39, gap: 4 },
      { value: 43, gap: 1 }
   ],
   [
      { value: 50, gap: 1 },
      { value: 51, gap: 1 },
      { value: 52, gap: 1 }
   ],
      [ { value: 55, gap: 1 } ],
      [ { value: 57, gap: 1 } ]
]

  1. JavaScript Array.prototype.values()

  2. JavaScript array.values()

  3. কিভাবে জাভাস্ক্রিপ্টে আইডি দ্বারা অবজেক্টের অ্যারে গ্রুপ করবেন?

  4. জাভাস্ক্রিপ্টে একটি মানের উপর ভিত্তি করে বস্তুগুলিকে কীভাবে গ্রুপ করবেন?