অ্যারে নিয়ে কাজ করার সময়, আপনি মাঝে মাঝে অ্যারের প্রতিটি মানের জন্য কিছু কোড চালাতে চান। এটাকেই বলা হয় অ্যারের উপর ইটারেশন করা বা লুপ করা।
এখানে আমরা সেই ক্ষেত্রটি দেখব যেখানে আপনি প্রক্রিয়ার মধ্যে অ্যারেটি পরিবর্তন করতে চান না। অ্যারে রূপান্তরের জন্য বদলে দেখুন কনসেপ্ট: অ্যারে রূপান্তর।
for লুপঅ্যারের উপর ইটারেশন করার সবচেয়ে মৌলিক এবং সাধারণত সবচেয়ে দক্ষ উপায় হলো একটি for লুপ ব্যবহার করা, দেখুন কনসেপ্ট: for লুপ।
const numbers = [6.0221515, 10, 23];
for (let i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}
// => 6.0221515
// => 10
// => 23
for...of লুপযখন আপনি প্রতিটি ইটারেশনে সরাসরি মানটি নিয়ে কাজ করতে চান এবং ইনডেক্সের একেবারেই দরকার নেই, তখন আপনি একটি for...of লুপ ব্যবহার করতে পারেন।
for...of উপরে দেখানো মৌলিক for লুপের মতোই কাজ করে, তবে লুপে একটি ভ্যারিয়েবল হিসেবে ইনডেক্স নিয়ে হিমশিম খাওয়ার বদলে আপনাকে সরাসরি মান দিয়ে দেওয়া হয়।
const numbers = [6.0221515, 10, 23];
// Because re-assigning number inside the loop will be very
// confusing, disallowing that via const is preferable.
for (const number of numbers) {
console.log(number);
}
// => 6.0221515
// => 10
// => 23
সাধারণ for লুপের মতোই, চলমান ইটারেশন থামাতে আপনি continue এবং লুপের কার্যক্রম পুরোপুরি থামাতে break ব্যবহার করতে পারেন।
অবজেক্টের কী (key) গুলোর উপর ইটারেশন করার জন্য JavaScript-এ for...in লুপও আছে। এটা মনে রাখা জরুরি যে for...of আর for...in একে অন্যের বদলে ব্যবহার করা যায় না, এ বিষয়ে বিস্তারিত জানতে দেখুন MDN ডকুমেন্টেশন।
forEach মেথডপ্রতিটি অ্যারেতে একটি forEach মেথড থাকে, যা দিয়ে অ্যারের এলিমেন্টগুলোর উপরও লুপ করা যায়।
forEach প্যারামিটার হিসেবে একটি ক্যালব্যাক নেয়। অ্যারের প্রতিটি এলিমেন্টের জন্য ক্যালব্যাক ফাংশনটি একবার করে কল করা হয়।
const numbers = [6.0221515, 10, 23];
numbers.forEach((number) => console.log(number));
// => 6.0221515
// => 10
// => 23
উপরের উদাহরণে ক্যালব্যাকটি প্যারামিটার হিসেবে শুধু বর্তমান এলিমেন্টটিই ব্যবহার করে। প্রয়োজনে ক্যালব্যাকটি সর্বোচ্চ তিনটি প্যারামিটার ব্যবহার করতে পারে।
const numbers = [6.0221515, 10, 23];
function callback(number, index, fullArray) {
console.log(number, index, fullArray);
}
numbers.forEach(callback);
// => 6.0221515 0 [ 6.0221515, 10, 23 ]
// => 10 1 [ 6.0221515, 10, 23 ]
// => 23 2 [ 6.0221515, 10, 23 ]
ক্যালব্যাক ছাড়াও, forEach ঐচ্ছিক দ্বিতীয় প্যারামিটার হিসেবে ইটারেশনে ব্যবহার করার জন্য this কনটেক্সট নেয়। MDN-এর "Using thisArg" অংশে একটি উদাহরণ দেখতে পাবেন।
forEach নিয়ে কাজ করার সময় কয়েকটি বিষয় মনে রাখা উচিত।
forEach লুপ শুরু হয়ে গেলে ইটারেশন থামানোর কোনো উপায় নেই। এই প্রসঙ্গে break আর continue স্টেটমেন্টের অস্তিত্ব নেই।forEach অদ্ভুতভাবে আচরণ করে। শেষে যোগ করা এলিমেন্ট উপেক্ষিত হবে, কোনো এলিমেন্ট মুছে ফেললে অন্যরা বাদ পড়তে পারে, ইত্যাদি। এ ধরনের সমস্যা এড়াতে, ক্যালব্যাকে মূল অ্যারেটি কখনোই পরিবর্তন করবেন না।forEach মেথডের নিজের রিটার্ন ভ্যালু undefined। এর কারণে, শেষে আর কোনো অ্যারে মেথড চেইন করা যায় না।for বা for...of ব্যবহারের কথা ভাবুন, কারণ দুটোই প্রায় তিন গুণ দ্রুত।