อาร์เรย์ JavaScript : ทำความเข้าใจเกี่ยวกับฟังก์ชั่นลด

วากยสัมพันธ์

arr.reduce(callbackFunction, [initialValue])

สิ่งที่ไม่ลดทำ?

ลดการเป็นฟังก์ชันที่ loops ผ่านอาร์เรย์.

การดำเนินงานที่สามารถดำเนินการในอาร์เรย์ผ่านฟังก์ชั่นการติดต่อกลับ.

ในตอนท้ายของการดำเนินงานในอาร์เรย์, ลดผลตอบแทนค่าเดียว

ลดสามารถนำมาใช้, ตัวอย่างเช่น, รวมรถเข็นช็อปปิ้ง

ตัวอย่าง

  ให้ ARR = [1,2,3,4,5];
  arr.reduce( (ผู้สะสม, currentValue, currentIndex, แถว) => { 
      //ดำเนินการบางอย่าง;
      บางสิ่งบางอย่างกลับมา;
  });

 

ฟังก์ชั่นการโทรกลับ

ฟังก์ชั่นการโทรกลับถูกเรียกสำหรับองค์ประกอบในอาร์เรย์แต่ละ, ผ่านใน 4 ข้อโต้แย้งที่จะถูกส่งผ่านโดยฟังก์ชั่นลด.

เหล่านี้ 4 ข้อโต้แย้งนั้นจะสามารถใช้ในการทำงานของเราโทรกลับ.

ใช้เวลาสี่ข้อโต้แย้ง

  1. ผู้สะสม – องค์ประกอบแรกของอาร์เรย์ในวงแรกหรือค่าเริ่มต้นถ้าให้มาด้วย. แล้วค่ากลับมาของวงก่อนหน้านี้.
  2. currentValue – องค์ประกอบปัจจุบันในอาร์เรย์. เริ่มต้นจากองค์ประกอบที่สองคือในอาร์เรย์. ARR[1], เมื่ออาร์กิวเมนต์ค่าเริ่มต้นไม่ผ่าน. ถ้าอาร์กิวเมนต์ค่าเริ่มต้นจะถูกส่งผ่านค่าปัจจุบันนั้นเริ่มจากองค์ประกอบ 1 ใน ARR อาร์เรย์[0].
  3. currentIndex – ดัชนีองค์ประกอบปัจจุบัน.
  4. แถว – อาร์เรย์ทั้ง.

ตัวอย่างการทำงาน

ให้ ARR = [1,2,3,4,5];

arr.reduce(
  (ผู้สะสม, currentValue, currentIndex, แถว) => {
    console.log(`สะสม (เมื่อวันที่ 1 ห่วง, สะสมเป็น ARR[0], แล้วมันเป็นค่ากลับมาของวงก่อนหน้านี้): ${ผู้สะสม}`);
    console.log(`currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[1]): ${currentValue}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(`อาร์เรย์: ${แถว}`);
    console.log('---');
    การกลับมาสะสม + currentValue;
  }
);

เอาท์พุต

ผู้สะสม (เมื่อวันที่ 1 ห่วง, สะสมเป็น ARR[0], แล้วมันเป็นค่ากลับมาของวงก่อนหน้านี้): 1
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[1]): 2
currentIndex: 1
แถว: 1,2,3,4,5
---
ผู้สะสม (เมื่อวันที่ 1 ห่วง, สะสมเป็น ARR[0], แล้วมันเป็นค่ากลับมาของวงก่อนหน้านี้): 3
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[1]): 3
currentIndex: 2
แถว: 1,2,3,4,5
---
ผู้สะสม (เมื่อวันที่ 1 ห่วง, สะสมเป็น ARR[0], แล้วมันเป็นค่ากลับมาของวงก่อนหน้านี้): 6
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[1]): 4
currentIndex: 3
แถว: 1,2,3,4,5
---
ผู้สะสม (เมื่อวันที่ 1 ห่วง, สะสมเป็น ARR[0], แล้วมันเป็นค่ากลับมาของวงก่อนหน้านี้): 10
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[1]): 5
currentIndex: 4
แถว: 1,2,3,4,5
---

 

ให้ค่าเริ่มต้น

ระบุพารามิเตอร์ที่สอง (initialValue) ในฟังก์ชั่นลดจะทำให้เกิด initialValue ที่จะผ่านในการเป็นอาร์กิวเมนต์สะสมในวงแรก.

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

ตัวอย่างการทำงาน

  ให้ ARR = [1,2,3,4,5];

  arr.reduce(
  (ผู้สะสม, currentValue, currentIndex, แถว) => {
    console.log(`สะสม ( ในวงที่ 1, นี้เป็นค่าเริ่มต้น, แล้วค่ากลับมาของวงก่อนหน้านี้): ${ผู้สะสม}`);
    console.log(`currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[0]): ${currentValue}`);
    console.log(`currentIndex: ${currentIndex}`);
    console.log(`อาร์เรย์: ${แถว}`);
    console.log('---');
    การกลับมาสะสม + currentValue;
  }, 0
);

เอาท์พุต

ผู้สะสม ( ในวงที่ 1, นี้เป็นค่าเริ่มต้น, แล้วค่ากลับมาของวงก่อนหน้านี้): 0
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[0]): 1
currentIndex: 0
แถว: 1,2,3,4,5
---
ผู้สะสม ( ในวงที่ 1, นี้เป็นค่าเริ่มต้น, แล้วค่ากลับมาของวงก่อนหน้านี้): 1
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[0]): 2
currentIndex: 1
แถว: 1,2,3,4,5
---
ผู้สะสม ( ในวงที่ 1, นี้เป็นค่าเริ่มต้น, แล้วค่ากลับมาของวงก่อนหน้านี้): 3
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[0]): 3
currentIndex: 2
แถว: 1,2,3,4,5
---
ผู้สะสม ( ในวงที่ 1, นี้เป็นค่าเริ่มต้น, แล้วค่ากลับมาของวงก่อนหน้านี้): 6
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[0]): 4
currentIndex: 3
แถว: 1,2,3,4,5
---
ผู้สะสม ( ในวงที่ 1, นี้เป็นค่าเริ่มต้น, แล้วค่ากลับมาของวงก่อนหน้านี้): 10
currentValue (loops ผ่านอาร์เรย์, เริ่มต้นที่ ARR[0]): 5
currentIndex: 4
แถว: 1,2,3,4,5
---