সমস্যা বিবরণ
একটি লিটারেল ভ্যালুর অ্যারে দেওয়া আছে। প্রতিটি এলিমেন্টের ফ্রিকোয়েন্সি গণনা করে একটি নতুন ২D অ্যারে তৈরি করতে হবে।
উদাহরণ:
const arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4];
প্রত্যাশিত আউটপুট:
const output = [
[5, 3],
[2, 5],
[9, 1],
[4, 1]
];
সমাধান
const arr = [5, 5, 5, 2, 2, 2, 2, 2, 9, 4];
const frequencyArray = (arr = []) => {
const res = [];
arr.forEach(el => {
if (!this[el]) {
this[el] = [el, 0];
res.push(this[el]);
}
this[el][1]++;
}, {});
return res;
};
console.log(frequencyArray(arr));
আউটপুট
[ [ 5, 3 ], [ 2, 5 ], [ 9, 1 ], [ 4, 1 ] ]
কোড ব্যাখ্যা
forEachলুপের তৃতীয় আর্গুমেন্ট হিসেবে খালি অবজেক্ট{}পাস করা হয়েছে, যাthisহিসেবে কাজ করে।- প্রতিটি এলিমেন্টের জন্য যদি
this[el]না থাকে, তবে নতুন এন্ট্রি তৈরি করা হয়। - কাউন্টার বাড়িয়ে রেজাল্ট অ্যারেতে পুশ করা হয়।