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

JavaScript-এ forEach ব্যবহার করে নন-নাল ও নন-এমপ্টি ভ্যালু গণনা

ভূমিকা

একটি অ্যারে থেকে খালি স্ট্রিং (`''`) এবং `null` বাদে অন্যান্য ভ্যালুগুলোর সংখ্যা গণনা করার পদ্ধতি। `forEach()` লুপ ব্যবহার করে ইটারেশন করা হয়েছে।

সম্পূর্ণ কোড

let subjectNames = ['JavaScript', 'Angular', 'AngularJS', 'Java'];

var count = 0;
subjectNames.forEach(subject => {
  if (subject != '' || subject != null) {
    count += 1;
  }
});

console.log("Number of subject==" + count); // 4

⚠️ লজিক্যাল বাগ সনাক্তকরণ

মূল কোডে একটি **লজিক্যাল এরর** আছে:

if (subject != '' || subject != null)

এই শর্ত **সবসময় true** হবে, কারণ:

  • যদি `subject === ''` হয়, তবে `subject != null` → true
  • যদি `subject === null` হয়, তবে `subject != ''` → true
  • দুটোই false হতে পারে না

সঠিক শর্ত

// AND (&&) ব্যবহার করুন - দুটোই নয়
if (subject !== '' && subject !== null)

// অথবা !== (strict inequality)
if (subject != '' && subject != null)

// অথবা truthy চেক (সাধারণ ক্ষেত্রে)
if (subject)

সঠিক কোড

let subjectNames = ['JavaScript', 'Angular', 'AngularJS', 'Java', '', null];

let count = 0;
subjectNames.forEach(subject => {
  if (subject !== '' && subject !== null) {
    count += 1;
  }
});

console.log("Number of subject==" + count); // 4

আউটপুট

Number of subject==4

আধুনিক ও উন্নত পদ্ধতিগুলো

১. filter + length (সংক্ষিপ্ত ও ফাংশনাল)

const count = subjectNames.filter(s => s !== '' && s !== null).length;
// অথবা truthy ফিল্টার
const count = subjectNames.filter(Boolean).length; // '', null, undefined, 0, false বাদ

২. Reduce (এক পাস)

const count = subjectNames.reduce((acc, val) => 
  acc + (val !== '' && val !== null ? 1 : 0), 0);

৩. for...of লুপ (আধুনিক, ব্রেক সাপোর্ট)

let count = 0;
for (const subject of subjectNames) {
  if (subject !== '' && subject !== null) count++;
}

Truthy/Falsy চিট শিট

ভ্যালু Truthy? Filter(Boolean) রাখবে?
"" (খালি স্ট্রিং)Falsyনা
nullFalsyনা
undefinedFalsyনা
0Falsyনা
falseFalsyনা
"0"Truthyহ্যাঁ
"false"Truthyহ্যাঁ
[]Truthyহ্যাঁ
{}Truthyহ্যাঁ

সারাংশ

মূল কোডে লজিক্যাল বাগ ছিল (`||` বদলে `&&` ব্যবহার করতে হতো)। আধুনিক কোডে `filter(Boolean)` বা `filter(s => s != null && s !== '')` ব্যবহার করুন। `forEach` বদলে `for...of` বা অ্যারে মেথড চেইনিং বেশি পঠনযোগ্য।

  1. জাভাস্ক্রিপ্টে পজিটিভ এবং নেগেটিভ ইনফিনিটি মান প্রিন্ট করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে File এবং FileReader

  3. জাভাস্ক্রিপ্টে ফলসি ভ্যালু চিহ্নিত করা

  4. জাভাস্ক্রিপ্টে HTML ফর্মের মান কনসোলে দেখানো