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

জাভাস্ক্রিপ্টে ডাইনামিক্যালি টাইপড অ্যারে থেকে সর্বোচ্চ সংখ্যা বের করা

একটি অ্যারে দেওয়া আছে যাতে সংখ্যা, স্ট্রিং, undefined, null, NaN ইত্যাদি মিশ্র টাইপের মান থাকতে পারে। আমাদের ফাংশনটি শুধু সংখ্যা (Number) মানগুলো থেকে সর্বোচ্চটি বের করবে।

উদাহরণ

ইনপুট:

const arr = [23, 'hello', undefined, null, 21, 65, NaN, 1, undefined, 'hii'];

আউটপুট: 65

উদাহরণ কোড

const arr = [23, 'hello', undefined, null, 21, 65, NaN, 1, undefined, 'hii'];

const pickBiggest = arr => {
  let max = -Infinity;
  
  for (let i = 0; i < arr.length; i++) {
    // !+arr[i] চেক করে নন-নাম্বার বা NaN/0/null/undefined বাদ দেয়
    if (!+arr[i]) {
      continue;
    }
    max = Math.max(max, +arr[i]);
  }
  
  return max;
};

console.log(pickBiggest(arr));

আউটপুট

65

ব্যাখ্যা

  • +arr[i] দিয়ে মানকে সংখ্যায় কনভার্ট করা হয়েছে। স্ট্রিং, null, undefined, NaN -> NaN বা 0 হয়।
  • !+arr[i] সত্য হলে (অর্থাৎ NaN, 0, null, undefined, false, "") সেটি বাদ দেওয়া হয়েছে।
  • সীমাবদ্ধতা: এই লজিক 0 কে বাদ দেয়, কিন্তু ০ একটি বৈধ সংখ্যা। যদি অ্যারেতে ০ থাকে এবং সেটিই সর্বোচ্চ হয় (সব নেগেটিভ হলে), তবে এই কোড সঠিক কাজ করবে না।

উন্নত সংস্করণ (Type-safe)

const pickBiggestSafe = arr => {
  let max = -Infinity;
  for (const val of arr) {
    if (typeof val === 'number' && !isNaN(val)) {
      max = Math.max(max, val);
    }
  }
  return max === -Infinity ? null : max; // কোনো সংখ্যা নাইলে null
};

এই ভার্সনটি 0 কে সঠিকভাবে হ্যান্ডেল করে এবং শুধু আসল number টাইপ বিবেচনা করে।

  1. জাভাস্ক্রিপ্টে অ্যারে খালি কীভাবে করবেন?

  2. জাভাস্ক্রিপ্টে অ্যারে খালি করার উপায়

  3. জাভাস্ক্রিপ্ট টাইপড অ্যারে

  4. জাভাস্ক্রিপ্ট বেসিক অ্যারে মেথড: push, pop, shift, unshift, splice