বেশিরভাগ কেসে নরমাল for লুপ ব্যবহার করা ভালো, for...in লুপের চেয়ে। কারণ for...in লুপ ইন্ডেক্স রিটার্ন করে এবং খালি ইন্ডেক্সগুলো ইগনোর করে, কিন্তু নরমাল for লুপ ভ্যালু দেখায় এবং খালি ইন্ডেক্সে undefined দেখায় যাতে ডেভেলপার বিভ্রান্ত হয় না।
সিনট্যাক্স
// for...in লুপ
for (var x in array) { /* code */ }
// নরমাল for লুপ
for (var i = 0; i < array.length; i++) { /* code */ }
উদাহরণ-১: for...in লুপ (ইন্ডেক্স দেখায়, গ্যাপ ইগনোর)
<html> <body>
<script>
var num = [1, 2, 3, 4, 5];
num[7] = 7; // ইন্ডেক্স ৫, ৬ খালি রইল
for (var x in num) {
document.write(x);
document.write("</br>");
}
</script>
</body> </html>
আউটপুট
0 1 2 3 4 7
ইন্ডেক্স ৫ এবং ৬ স্কিপ হয়ে গেলো। ডেভেলপার ভাবতে পারে অ্যারেতে ৬ এলিমেন্ট আছে, কিন্তু আসলে ৮টি স্লট আছে।
উদাহরণ-২: নরমাল for লুপ (ভ্যালু দেখায়, গ্যাপে undefined)
<html> <body>
<script>
var num = [1, 2, 3, 4, 5];
num[7] = 7;
for (var i = 0; i < num.length; i++) {
document.write(num[i]);
document.write("</br>");
}
</script>
</body> </html>
আউটপুট
1 2 3 4 5 undefined undefined 7
অন্যান্য সমস্যা
for...inইনহেরিটেড প্রপার্টিও ইটারেট করে (প্রোটোটাইপ চেইন থেকে)- অ্যারে ইটারেশনের জন্য
for...of(ES6) বাforEach,map,forলুপ ভালো for...inঅবজেক্টের কী ইটারেট করার জন্য উপযুক্ত