Js อาร์เรย์หลายมิติ อาร์เรย์หลายมิติใน JavaScript I. วนซ้ำอาร์เรย์จริง

  • I. วนซ้ำอาร์เรย์จริง
  • สำหรับแต่ละวิธีและวิธีการที่เกี่ยวข้อง
  • สำหรับวง
  • การใช้ for...in loop อย่างเหมาะสม
  • for...of loop (การใช้ตัววนซ้ำโดยนัย)
  • การใช้ตัววนซ้ำอย่างชัดเจน
  • การใช้เมธอดเพื่อวนซ้ำอาร์เรย์จริง
  • แปลงเป็นอาร์เรย์จริง
  • หมายเหตุเกี่ยวกับออบเจ็กต์รันไทม์
I. การวนซ้ำบนอาร์เรย์จริง ในขณะนี้ มีสามวิธีในการวนซ้ำองค์ประกอบของอาร์เรย์จริง:
  • วิธีการ Array.prototype.forEach ;
  • คลาสสิกสำหรับวง
  • สร้าง "อย่างถูกต้อง" สำหรับ...ในลูป
  • นอกจากนี้ เร็วๆ นี้ ด้วยการถือกำเนิดของมาตรฐาน ECMAScript 6 (ES 6) ใหม่ คาดว่าจะมีอีกสองวิธี:
  • for...of loop (การใช้ตัววนซ้ำโดยนัย);
  • การใช้ตัววนซ้ำอย่างชัดเจน
  • 1. วิธี forEach และวิธีการที่เกี่ยวข้อง หากโครงการของคุณได้รับการออกแบบเพื่อรองรับคุณลักษณะของมาตรฐาน ECMAScript 5 (ES5) คุณสามารถใช้หนึ่งในนวัตกรรมของโครงการได้ - วิธี forEach

    ตัวอย่างการใช้งาน:
    วาร์ = ["a", "b", "c"]; a.forEach(ฟังก์ชั่น(รายการ) ( console.log(รายการ); ));
    โดยทั่วไป การใช้ forEach จำเป็นต้องเชื่อมต่อไลบรารีการจำลอง es5-shim สำหรับเบราว์เซอร์ที่ไม่รองรับวิธีนี้โดยกำเนิด ซึ่งรวมถึง IE 8 และเก่ากว่า ซึ่งยังคงมีการใช้งานอยู่ในบางแห่ง

    ข้อดีของ forEach คือไม่จำเป็นต้องประกาศตัวแปรในเครื่องเพื่อจัดเก็บดัชนีและค่าขององค์ประกอบอาร์เรย์ปัจจุบัน เนื่องจากตัวแปรเหล่านั้นจะถูกส่งผ่านไปยังฟังก์ชันเรียกกลับโดยอัตโนมัติเป็นอาร์กิวเมนต์

    หากคุณกังวลเกี่ยวกับค่าใช้จ่ายที่อาจเกิดขึ้นในการโทรกลับในแต่ละองค์ประกอบ ไม่ต้องกังวลและอ่านข้อความนี้

    ForEach ได้รับการออกแบบมาเพื่อวนซ้ำองค์ประกอบทั้งหมดของอาร์เรย์ แต่นอกจากนั้น ES5 ยังมีวิธีที่มีประโยชน์อีกมากมายสำหรับการวนซ้ำองค์ประกอบทั้งหมดหรือบางส่วน พร้อมทั้งดำเนินการบางอย่างกับองค์ประกอบเหล่านั้น:

    • every - คืนค่าเป็นจริงหากการเรียกกลับส่งคืนค่าที่สามารถแปลงเป็นจริงสำหรับแต่ละองค์ประกอบของอาร์เรย์ได้
    • some - คืนค่าจริงหากองค์ประกอบอย่างน้อยหนึ่งรายการในอาร์เรย์ที่เรียกกลับจะส่งกลับค่าที่สามารถแปลงเป็นจริงได้
    • ตัวกรอง - สร้างอาร์เรย์ใหม่ที่มีองค์ประกอบของอาร์เรย์เดิมซึ่งการเรียกกลับส่งคืน true
    • map - สร้างอาร์เรย์ใหม่ซึ่งประกอบด้วยค่าที่ส่งคืนโดยการเรียกกลับ
    • ลด - ลดอาร์เรย์ให้เป็นค่าเดียว โดยใช้การเรียกกลับกับแต่ละองค์ประกอบของอาร์เรย์ตามลำดับ โดยเริ่มจากค่าแรก (มีประโยชน์สำหรับการคำนวณผลรวมขององค์ประกอบอาร์เรย์และฟังก์ชันสรุปอื่นๆ)
    • ลดขวา - ทำงานคล้ายกับการลด แต่วนซ้ำผ่านองค์ประกอบในลำดับย้อนกลับ
    2. สำหรับวง เก่าดีสำหรับกฎเกณฑ์:

    วาร์ = ["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 สมัยใหม่ เกมการปรับให้เหมาะสมนั้นมักจะไม่มีความหมายอะไรเลย

    3. การใช้ for...in Loop อย่างเหมาะสม หากคุณได้รับการแนะนำให้ใช้ for...in loop โปรดจำไว้ว่าการวนซ้ำในอาร์เรย์ไม่ใช่สิ่งที่ตั้งใจไว้ ตรงกันข้ามกับความเข้าใจผิดทั่วไป for...in loop จะไม่วนซ้ำดัชนีอาร์เรย์ แต่จะวนซ้ำผ่านคุณสมบัติที่นับได้ของอ็อบเจ็กต์

    อย่างไรก็ตาม ในบางกรณี เช่น การวนซ้ำอาร์เรย์แบบกระจาย for...in อาจมีประโยชน์ ตราบใดที่คุณใช้ความระมัดระวัง ดังที่แสดงในตัวอย่างด้านล่าง:

    // a - อาร์เรย์กระจัดกระจาย var a = ; เป็น = "เป็น"; ก = "ข"; มี = "ค"; สำหรับ (คีย์ var ใน a) ( if (a.hasOwnProperty(key) && /^0$|^\d*$/.test(key) && key

    มีคำถามหรือไม่?

    แจ้งการพิมพ์ผิด

    ข้อความที่จะส่งถึงบรรณาธิการของเรา: