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

JavaScript-এ অ্যারে গ্রুপ করা দুটি প্রোপার্টি অনুযায়ী


আমাদের কাছে নিচের মতো একটি অবজেক্টের অ্যারে আছে:

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 }, ];

আমাদের একটি ফাংশন লিখতে হবে যা এই অ্যারেটি গ্রহণ করে এবং একটি নতুন অ্যারে রিটার্ন করবে যেখানে সকল কনসিকিউটিভ অবজেক্ট যেসবের value পূর্ববর্তী অবজেক্টের value এবং gap-এর সমষ্টির সমান, সেগুলো একসাথে একটি সাব-অ্যারেতে গ্রুপ করা থাকবে।

উদাহরণস্বরূপ - value 12-এর gap 1 এবং এর পরবর্তী অবজেক্টের value 13, তাই সেগুলো গ্রুপ হবে এবং তাদের সাথে value 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) => {       // accumulated data এবং accumulated data-এর lastIndex       const { data, currentIndex } = acc;       // বর্তমান অবজেক্টের প্রোপার্টি       const { value, gap } = val;       // পূর্ববর্তী অবজেক্টের প্রোপার্টি       const v = arr[ind-1]?.value;       const g = arr[ind-1]?.gap;       if(ind === 0 || value !== v + g){          // লাস্ট অবজেক্টের ইনডেক্স রেকর্ড করা এবং নতুন সাব-অ্যারে পুশ করা          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. জাভাস্ক্রিপ্ট Array.prototype.values() মেথড

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

  3. জাভাস্ক্রিপ্টে অবজেক্টের অ্যারে ID দিয়ে গ্রুপ করা

  4. জাভাস্ক্রিপ্টে ভ্যালু অনুযায়ী অবজেক্ট গ্রুপ করা