การใช้for...in
ลูปสำหรับอาร์เรย์นั้นไม่ผิด แต่ฉันก็เดาได้ว่าทำไมมีคนบอกคุณว่า:
1. ) มีฟังก์ชั่นการสั่งซื้อที่สูงขึ้นหรือวิธีการที่มีวัตถุประสงค์สำหรับอาร์เรย์ แต่มีฟังก์ชันการทำงานมากขึ้นและไวยากรณ์ลีนที่เรียกว่า 'forEach': Array.prototype.forEach(function(element, index, array) {} );
2. ) อาร์เรย์มีความยาวเสมอ แต่for...in
และforEach
ไม่เรียกใช้ฟังก์ชันสำหรับค่าใด ๆ ที่เป็นค่า'undefined'
เฉพาะสำหรับดัชนีที่มีค่าที่กำหนดไว้เท่านั้น ดังนั้นหากคุณกำหนดเพียงหนึ่งค่าลูปเหล่านี้จะเรียกใช้ฟังก์ชันเพียงครั้งเดียว แต่เนื่องจากอาร์เรย์มีการแจกแจงจึงมักจะมีความยาวจนถึงดัชนีสูงสุดที่มีค่าที่กำหนด แต่ความยาวนั้นจะไม่สังเกตเห็นเมื่อใช้สิ่งเหล่านี้ ลูป
3. ) มาตรฐานสำหรับการวนซ้ำจะเรียกใช้ฟังก์ชันหลายครั้งตามที่คุณกำหนดไว้ในพารามิเตอร์และเนื่องจากอาร์เรย์มีหมายเลขแล้วจึงมีความหมายมากกว่าที่จะกำหนดจำนวนครั้งที่คุณต้องการเรียกใช้ฟังก์ชัน ต่างจากลูปอื่น ๆ สำหรับลูปนั้นสามารถเรียกใช้ฟังก์ชั่นสำหรับทุกดัชนีในอาเรย์ไม่ว่าจะมีการกำหนดค่า
ในสาระสำคัญคุณสามารถใช้วงใด ๆ แต่คุณควรจำไว้อย่างชัดเจนว่าพวกเขาทำงานอย่างไร ทำความเข้าใจกับเงื่อนไขที่ลูปที่แตกต่างกันย้ำถึงฟังก์ชั่นที่แยกต่างหากและตระหนักว่าพวกเขาจะเหมาะสมมากขึ้นหรือน้อยลงสำหรับสถานการณ์ที่แตกต่างกัน
นอกจากนี้อาจถือว่าเป็นวิธีปฏิบัติที่ดีกว่าในการใช้forEach
วิธีนี้กว่าการfor...in
วนซ้ำโดยทั่วไปเนื่องจากง่ายต่อการเขียนและมีฟังก์ชันการทำงานมากขึ้นดังนั้นคุณอาจต้องการใช้วิธีนี้และมาตรฐานสำหรับนิสัยของคุณเท่านั้น โทร.
ดูด้านล่างว่าสองลูปแรกเรียกใช้งานคำสั่ง console.log เพียงครั้งเดียวในขณะที่มาตรฐานสำหรับลูปเรียกใช้ฟังก์ชันหลายครั้งตามที่ระบุในกรณีนี้ array.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]