Js อาร์เรย์หลายมิติ อาร์เรย์หลายมิติใน JavaScript I. วนซ้ำอาร์เรย์จริง
- I. วนซ้ำอาร์เรย์จริง
- สำหรับแต่ละวิธีและวิธีการที่เกี่ยวข้อง
- สำหรับวง
- การใช้ for...in loop อย่างเหมาะสม
- for...of loop (การใช้ตัววนซ้ำโดยนัย)
- การใช้ตัววนซ้ำอย่างชัดเจน
- การใช้เมธอดเพื่อวนซ้ำอาร์เรย์จริง
- แปลงเป็นอาร์เรย์จริง
- หมายเหตุเกี่ยวกับออบเจ็กต์รันไทม์
ตัวอย่างการใช้งาน:
วาร์ = ["a", "b", "c"]; a.forEach(ฟังก์ชั่น(รายการ) ( console.log(รายการ); ));
โดยทั่วไป การใช้ forEach จำเป็นต้องเชื่อมต่อไลบรารีการจำลอง es5-shim สำหรับเบราว์เซอร์ที่ไม่รองรับวิธีนี้โดยกำเนิด ซึ่งรวมถึง IE 8 และเก่ากว่า ซึ่งยังคงมีการใช้งานอยู่ในบางแห่ง
ข้อดีของ forEach คือไม่จำเป็นต้องประกาศตัวแปรในเครื่องเพื่อจัดเก็บดัชนีและค่าขององค์ประกอบอาร์เรย์ปัจจุบัน เนื่องจากตัวแปรเหล่านั้นจะถูกส่งผ่านไปยังฟังก์ชันเรียกกลับโดยอัตโนมัติเป็นอาร์กิวเมนต์
หากคุณกังวลเกี่ยวกับค่าใช้จ่ายที่อาจเกิดขึ้นในการโทรกลับในแต่ละองค์ประกอบ ไม่ต้องกังวลและอ่านข้อความนี้
ForEach ได้รับการออกแบบมาเพื่อวนซ้ำองค์ประกอบทั้งหมดของอาร์เรย์ แต่นอกจากนั้น ES5 ยังมีวิธีที่มีประโยชน์อีกมากมายสำหรับการวนซ้ำองค์ประกอบทั้งหมดหรือบางส่วน พร้อมทั้งดำเนินการบางอย่างกับองค์ประกอบเหล่านั้น:
- every - คืนค่าเป็นจริงหากการเรียกกลับส่งคืนค่าที่สามารถแปลงเป็นจริงสำหรับแต่ละองค์ประกอบของอาร์เรย์ได้
- some - คืนค่าจริงหากองค์ประกอบอย่างน้อยหนึ่งรายการในอาร์เรย์ที่เรียกกลับจะส่งกลับค่าที่สามารถแปลงเป็นจริงได้
- ตัวกรอง - สร้างอาร์เรย์ใหม่ที่มีองค์ประกอบของอาร์เรย์เดิมซึ่งการเรียกกลับส่งคืน true
- map - สร้างอาร์เรย์ใหม่ซึ่งประกอบด้วยค่าที่ส่งคืนโดยการเรียกกลับ
- ลด - ลดอาร์เรย์ให้เป็นค่าเดียว โดยใช้การเรียกกลับกับแต่ละองค์ประกอบของอาร์เรย์ตามลำดับ โดยเริ่มจากค่าแรก (มีประโยชน์สำหรับการคำนวณผลรวมขององค์ประกอบอาร์เรย์และฟังก์ชันสรุปอื่นๆ)
- ลดขวา - ทำงานคล้ายกับการลด แต่วนซ้ำผ่านองค์ประกอบในลำดับย้อนกลับ
วาร์ = ["a", "b", "c"]; ดัชนี var; สำหรับ (ดัชนี = 0; ดัชนี< a.length; ++index) {
console.log(a);
}
หากความยาวของอาร์เรย์คงที่ตลอดทั้งลูป และตัวลูปเองอยู่ในส่วนของโค้ดที่มีความสำคัญต่อประสิทธิภาพ (ซึ่งไม่น่าเป็นไปได้) คุณสามารถใช้เวอร์ชันที่ "เหมาะสมกว่า" ของ for ที่จะจัดเก็บความยาวของอาร์เรย์ : :
วาร์ = ["a", "b", "c"]; ดัชนี var, len; สำหรับ (ดัชนี = 0, len = a.length; ดัชนี< len; ++index) {
console.log(a);
}
ตามทฤษฎีแล้ว โค้ดนี้ควรจะทำงานเร็วกว่าโค้ดก่อนหน้าเล็กน้อย
หากลำดับขององค์ประกอบไม่สำคัญคุณสามารถไปไกลกว่านี้ในแง่ของการปรับให้เหมาะสมและกำจัดตัวแปรสำหรับจัดเก็บความยาวของอาเรย์โดยเปลี่ยนลำดับการค้นหาเป็นแบบย้อนกลับ:
วาร์ = ["a", "b", "c"]; ดัชนี var; สำหรับ (ดัชนี = a.length - 1; ดัชนี >= 0; --index) ( console.log(a); )
อย่างไรก็ตาม ในเอ็นจิ้น JavaScript สมัยใหม่ เกมการปรับให้เหมาะสมนั้นมักจะไม่มีความหมายอะไรเลย
อย่างไรก็ตาม ในบางกรณี เช่น การวนซ้ำอาร์เรย์แบบกระจาย for...in อาจมีประโยชน์ ตราบใดที่คุณใช้ความระมัดระวัง ดังที่แสดงในตัวอย่างด้านล่าง:
// a - อาร์เรย์กระจัดกระจาย var a = ; เป็น = "เป็น"; ก = "ข"; มี = "ค"; สำหรับ (คีย์ var ใน a) ( if (a.hasOwnProperty(key) && /^0$|^\d*$/.test(key) && key