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

জাভাস্ক্রিপ্টে forEach() লুপ কীভাবে বন্ধ করবেন (break alternatives)?

forEach-এ break নেই — বিকল্প পদ্ধতিগুলো

Array.prototype.forEach() মেথডে break বা continue ব্যবহার করা যায় না। এটি সব ইটেমের ওপর ইটারেট করে এবং মাঝপথে বের হওয়ার কোনো বিল্ট-ইন উপায় নেই (এক্সেপশন থ্রো করার ছাড়া, যা অপরামর্শকর)।

বিকল্প ১: for...of লুপ (ES6+) — প্রস্তাবিত

সাধারণ লুপ ব্যবহার করলে break, continue, return সব কাজ করে।

const arr = [1, 2, 3, 4, 5];

for (const item of arr) {
  if (item === 3) break; // লুপ থেকে বের হবে
  console.log(item); // 1, 2
}

বিকল্প ২: Array.prototype.some() / every()

  • some(): কলব্যাক true রিটার্ন করলে লুপ বন্ধ করে (break-এর মতো)।
  • every(): কলব্যাক false রিটার্ন করলে লুপ বন্ধ করে।
// some() ব্যবহার করে প্রথম মিল পাওয়ার সাথে সাথে বন্ধ
const found = arr.some(item => {
  if (item === 3) return true; // break
  console.log(item);
  return false; // চালিয়ে যাও
});

বিকল্প ৩: Array.prototype.find() / findIndex()

শুধু প্রথম মিলে যাওয়া এলিমেন্ট বা ইনডেক্স দরকার হলে এটি সেরা।

const found = arr.find(item => item > 2); // 3 রিটার্ন করবে এবং বন্ধ হবে
const index = arr.findIndex(item => item > 2); // 2 রিটার্ন করবে

বিকল্প ৪: Lodash _.find / _.forEach (লাইব্রেরি)

Lodash-এর _.find এবং _.forEach (লড্যাশ ভার্সন) break সমর্থন করে।

_.find([1,2,3,4], (element) => {
  if (element === 2) return true; // break
  // প্রসেসিং
});

বিকল্প ৫: এক্সেপশন থ্রো (অপরামর্শকর)

try {
  arr.forEach(item => {
    if (item === 2) throw new Error('BreakException');
  });
} catch (e) {
  if (e.message !== 'BreakException') throw e;
}

চেতাবনী: কন্ট্রোল ফ্লোর জন্য এক্সেপশন ব্যবহার করা অ্যান্টি-প্যাটার্ন, পারফরম্যান্স খারাপ এবং ডিবাগিং কঠিন করে।

সারসংক্ষেপ: কোনটি ব্যবহার করবেন?

পরিস্থিতিসেরা পদ্ধতি
সাধারণ লুপ, break/continue দরকারfor...of
শর্ত মেনে প্রথম এলিমেন্ট খুঁজে বের করাfind() / findIndex()
শর্ত মেনে প্রথম true চেক করাsome()
সব এলিমেন্ট শর্ত মেনে কিনা চেকevery()
লড্যাশ ইতিমধ্যে প্রজেক্টে আছে_.find

নিচের লাইন: forEach ব্যবহার করুন শুধু তখনই যখন আপনাকে **সব** এলিমেন্ট প্রসেস করতে হয় এবং মাঝপথে বের হতে হবে না। অন্যথায় for...of বা উপযুক্ত অ্যারে মেথড ব্যবহার করুন।

  1. অপেরা ব্রাউজারে জাভাস্ক্রিপ্ট এনেবল করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে মেথড বরো করা (call, apply, bind)

  3. জাভাস্ক্রিপ্টে অ্যারে রিডিউস করা (reduce)

  4. জাভাস্ক্রিপ্টে অবজেক্ট প্রপার্টি অ্যাক্সেস করার পদ্ধতি