Nên dùng for loop thường thay vì for...in vì:
for...inlặp index (key) dưới dạng string, không quan tâm "lỗ trống" (sparse array)forthường lặp theo index số, hiển thịundefined cho index trống, dev dễ nhận ra sparse array
Ví dụ 1: for...in bỏ qua index trống
<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>
Kết quả
0 1 2 3 4 7
Index 5, 6 bị bỏ qua - dev có thể nhầm mảng chỉ có 6 phần tử.
Ví dụ 2: for loop thường hiển thị 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>
Kết quả
1 2 3 4 5 undefined undefined 7
Best practice lặp mảng:
for (let i = 0; i < arr.length; i++)- kiểm soát indexfor (const item of arr)- ES6, chỉ giá trị, không index trốngarr.forEach((item, i) => ...)- functional, bỏ qua empty slotfor (const i in arr)- KHÔNG KHUYẾN NGHỊ cho mảng (dùng cho object)