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

জাভাস্ক্রিপ্টে প্রতিটি ছাত্রের n সংখ্যক সর্বোচ্চ মার্কের গড় বের করা


মনে করুন, আমাদের একটি অবজেক্টের অ্যারে আছে যেটে কিছু ছাত্রের তথ্য এবং সময়ের সাথে তাদের স্কোর রয়েছে —

const marks = [ 
  { id: 231, score: 34 }, 
  { id: 233, score: 37 }, 
  { id: 231, score: 31 }, 
  { id: 233, score: 39 }, 
  { id: 231, score: 44 }, 
  { id: 233, score: 41 }, 
  { id: 231, score: 38 }, 
  { id: 231, score: 31 }, 
  { id: 233, score: 29 }, 
  { id: 231, score: 34 }, 
  { id: 233, score: 40 }, 
  { id: 231, score: 31 }, 
  { id: 231, score: 30 }, 
  { id: 233, score: 38 }, 
  { id: 231, score: 43 }, 
  { id: 233, score: 42 }, 
  { id: 233, score: 28 }, 
  { id: 231, score: 33 }, 
];

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা এমন একটি অ্যারে প্রথম আর্গুমেন্ট এবং একটি সংখ্যা (num) দ্বিতীয় আর্গুমেন্ট হিসেবে গ্রহণ করবে।

ফাংশনটি প্রতিটি অনন্য ছাত্রের num সংখ্যক সর্বোচ্চ স্কোর রেকর্ড বেছে নেবে এবং তাদের গড় বের করবে। যদি কোনো ছাত্রের পর্যাপ্ত রেকর্ড না থাকে, তবে তাদের সব রেকর্ড বিবেচনা করবে।

শেষে ফাংশনটি একটি অবজেক্ট রিটার্ন করবে যেটে ছাত্রের id কী (key) এবং তাদের গড় স্কোর মান (value) হিসেবে থাকবে।

উদাহরণ

কোডটি নিচে দেওয়া হলো —

const marks = [ 
  { id: 231, score: 34 }, 
  { id: 233, score: 37 }, 
  { id: 231, score: 31 }, 
  { id: 233, score: 39 }, 
  { id: 231, score: 44 }, 
  { id: 233, score: 41 }, 
  { id: 231, score: 38 }, 
  { id: 231, score: 31 }, 
  { id: 233, score: 29 }, 
  { id: 231, score: 34 }, 
  { id: 233, score: 40 }, 
  { id: 231, score: 31 }, 
  { id: 231, score: 30 }, 
  { id: 233, score: 38 }, 
  { id: 231, score: 43 }, 
  { id: 233, score: 42 }, 
  { id: 233, score: 28 }, 
  { id: 231, score: 33 }, 
]; 
const calculateHighestAverage = (marks = [], num = 1) => { 
  const findHighestSum = (arr = [], upto = 1) => arr 
    .sort((a, b) => b - a) 
    .slice(0, upto) 
    .reduce((acc, val) => acc + val); 
  const res = {}; 
  for(const obj of marks){ 
    const { id, score } = obj; 
    if(res.hasOwnProperty(id)){ 
      res[id].push(score); 
    }else{ 
      res[id] = [score]; 
    } 
  }; 
  for(const id in res){ 
    res[id] = findHighestSum(res[id], num); 
  }; 
  return res; 
}; 
console.log(calculateHighestAverage(marks, 5)); 
console.log(calculateHighestAverage(marks, 4)); 
console.log(calculateHighestAverage(marks));

আউটপুট

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

{ '231': 193, '233': 200 } { '231': 159, '233': 162 } { '231': 44, '233': 42 }

  1. জাভাস্ক্রিপ্টে অ্যারেতে গড় (Average) গণনা

  2. জাভাস্ক্রিপ্টে অবজেক্ট মেম্বার সেট করা

  3. জাভাস্ক্রিপ্টে লিংকড লিস্টে প্রতিটি নোডের জন্য পরবর্তী বড় মান খুঁজে বের করা

  4. জাভাস্ক্রিপ্টে টেক্সট স্ট্রিংয়ে 탑 ৩ সবচেয়ে বেশি ফ্রিকোয়েন্ট শব্দ খুঁজে বের করা