Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tại sao for...in loop lặp mảng trong JavaScript là ý tưởng tồi?

Nên dùng for loop thường thay vì for...in vì:

  • for...in lặp index (key) dưới dạng string, không quan tâm "lỗ trống" (sparse array)
  • for thườ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 index
  • for (const item of arr) - ES6, chỉ giá trị, không index trống
  • arr.forEach((item, i) => ...) - functional, bỏ qua empty slot
  • for (const i in arr) - KHÔNG KHUYẾN NGHỊ cho mảng (dùng cho object)