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

JavaScript-এ অ্যারে কমপ্রেস করে কনsekutিভ এলিমেন্ট গ্রুপ করা (Reduce মেথড)


একটি স্ট্রিং দেওয়া আছে যা ড্যাশ (-) দিয়ে সেপারেটেড রিপিটিং ওয়ার্ড ধারণ করে:

const str = 'monday-sunday-tuesday-tuesday-sunday-sunday-monday-mondaymonday';

এখন একটি ফাংশন লিখতে হবে যা অবজেক্টের অ্যারে রিটার্ন করবে, প্রতিটি অবজেক্টে দুটি প্রপার্টি থাকবে: value (ওয়ার্ড) এবং count (কনsekutিভ আপিয়ারেন্স কাউন্ট)।

উপরের স্ট্রিংয়ের জন্য অ্যারে দেখতে এমন হবে:

const arr = [{    val: 'monday',    count: 1 }, {    val: 'sunday',    count: 1 }, {    val: 'tuesday',    count: 2 }, {    val: 'sunday',    count: 2 }, {    val: 'monday',    count: 3 }]

কারণ: monday ১বার, sunday ১বার, tuesday ২বার, sunday ২বার, monday ৩বার।

স্ট্রিংকে স্প্লিট করে Array.prototype.reduce() মেথড ব্যবহার করে রিকার্সিভলি ডিজায়ারড অ্যারে বানানো যাবে।

সম্পূর্ণ কোড:

উদাহরণ

const str = 'monday-sunday-tuesday-tuesday-sunday-sunday-monday-mondaymonday'; const str2 = 'friday-friday-sunday-tuesday-sunday-sunday-monday-thursdaymonday'; const compressString = (str) => {    return str.split('-').reduce((acc, val) => {       const { length: l } = acc;       if(acc[l-1]?.val === val){          acc[l-1].count++;          return acc;       }else{          return acc.concat({             val,             count: 1          });       }    }, []); } console.log(compressString(str)); console.log(compressString(str2));

আউটপুট

কনসোলে আউটপুট:

[    { val: 'monday', count: 1 },    { val: 'sunday', count: 1 },    { val: 'tuesday', count: 2 },    { val: 'sunday', count: 2 },    { val: 'monday', count: 3 } ] [    { val: 'friday', count: 2 },    { val: 'sunday', count: 1 },    { val: 'tuesday', count: 1 },    { val: 'sunday', count: 2 },    { val: 'monday', count: 1 },    { val: 'thursday', count: 1 },    { val: 'monday', count: 1 } ]
  1. জাভাস্ক্রিপ্ট অ্যারে অবজেক্ট গণনা করার উপায়

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

  3. জাভাস্ক্রিপ্টে অ্যারে এলিমেন্ট পুনর্বিন্যাস করে ডাবল রিলেশন তৈরি করা

  4. জাভাস্ক্রিপ্টে নেস্টেড অ্যারে-এর ডিপ কাউন্ট (Deep Count) বের করা