একটি স্ট্রিং দেওয়া আছে যা ড্যাশ (-) দিয়ে সেপারেটেড রিপিটিং ওয়ার্ড ধারণ করে:
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 } ]