Sử dụng for...in
vòng lặp cho một mảng không sai, mặc dù tôi có thể đoán tại sao ai đó nói với bạn rằng:
1.) Đã có một hàm hoặc phương thức bậc cao hơn, có mục đích đó cho một mảng, nhưng có nhiều chức năng hơn và cú pháp gọn hơn, được gọi là 'forEach': Array.prototype.forEach(function(element, index, array) {} );
2.) Mảng luôn luôn có một độ dài, nhưng for...in
và forEach
không thực hiện một chức năng đối với bất kỳ giá trị đó là 'undefined'
, chỉ dành cho các chỉ số có giá trị xác định. Vì vậy, nếu bạn chỉ gán một giá trị, các vòng lặp này sẽ chỉ thực hiện một hàm một lần, nhưng vì một mảng được liệt kê, nó sẽ luôn có độ dài lên đến chỉ mục cao nhất có giá trị xác định, nhưng độ dài đó có thể không được chú ý khi sử dụng các giá trị này vòng lặp.
3.) Tiêu chuẩn cho vòng lặp sẽ thực thi một hàm nhiều lần như bạn xác định trong các tham số và vì một mảng được đánh số, nên có ý nghĩa hơn để xác định số lần bạn muốn thực hiện một hàm. Không giống như các vòng lặp khác, vòng lặp for sau đó có thể thực thi một hàm cho mọi chỉ mục trong mảng, cho dù giá trị được xác định hay không.
Về bản chất, bạn có thể sử dụng bất kỳ vòng lặp nào, nhưng bạn nên nhớ chính xác cách chúng hoạt động. Hiểu các điều kiện mà các vòng lặp khác nhau nhắc lại, các chức năng riêng biệt của chúng và nhận ra chúng sẽ ít nhiều phù hợp với các kịch bản khác nhau.
Ngoài ra, nó có thể được coi là một cách sử dụng forEach
phương pháp tốt hơn so với for...in
vòng lặp nói chung, bởi vì nó dễ viết hơn và có nhiều chức năng hơn, vì vậy bạn có thể muốn có thói quen chỉ sử dụng phương pháp này và tiêu chuẩn cho, nhưng gọi.
Xem bên dưới rằng hai vòng lặp đầu tiên chỉ thực hiện các câu lệnh console.log một lần, trong khi vòng lặp tiêu chuẩn thực thi hàm nhiều lần như đã chỉ định, trong trường hợp này, mảng.length = 6.
var arr = [];
arr[5] = 'F';
for (var index in arr) {
console.log(index);
console.log(arr[index]);
console.log(arr)
}
// 5
// 'F'
// => (6) [undefined x 5, 6]
arr.forEach(function(element, index, arr) {
console.log(index);
console.log(element);
console.log(arr);
});
// 5
// 'F'
// => Array (6) [undefined x 5, 6]
for (var index = 0; index < arr.length; index++) {
console.log(index);
console.log(arr[index]);
console.log(arr);
};
// 0
// undefined
// => Array (6) [undefined x 5, 6]
// 1
// undefined
// => Array (6) [undefined x 5, 6]
// 2
// undefined
// => Array (6) [undefined x 5, 6]
// 3
// undefined
// => Array (6) [undefined x 5, 6]
// 4
// undefined
// => Array (6) [undefined x 5, 6]
// 5
// 'F'
// => Array (6) [undefined x 5, 6]