ข้อผิดพลาดในการหาค่าเฉลี่ยจากอาร์เรย์
ลองพิจารณาข้อผิดพลาดที่เกี่ยวข้องกับการหา ค่าเฉลี่ยเลขคณิตจากองค์ประกอบของ อาร์เรย์ ตัวอย่างเช่น สมมติว่าเรา มีอาร์เรย์ดังนี้:
let arr = [1, 2, 3, 4, 5];
ในการหาค่าเฉลี่ยขององค์ประกอบ คุณต้องหาผลรวมและหาร ด้วยจำนวน Programmer คนหนึ่ง ได้แก้ปัญหานี้ด้วยวิธี ต่อไปนี้:
let avg = 0;
for (let elem of arr) {
avg += elem / arr.length;
}
console.log(avg);
ลองพิจารณาปัญหาของวิธีแก้ปัญหานี้ ในทางเทคนิคโค้ดทำงานถูกต้องและให้ คำตอบที่ถูกต้อง ประเด็นคือในทางคณิตศาสตร์มันถูกต้อง ทั้งการหารผลรวมทั้งหมดด้วยจำนวน และการหารแต่ละเทอมด้วยจำนวน
อย่างไรก็ตาม ปัญหาอื่นก็เกิดขึ้น ประเด็น คือเราจะทำการหาร หลายครั้งเท่ากับจำนวนองค์ประกอบใน อาร์เรย์ของเรา และปรากฏว่าเราทำ การดำเนินการที่ฟุ่มเฟือยจำนวนมาก เพราะการหารสามารถทำได้ ในตอนท้าย - เพียงครั้งเดียว โดยหาร ผลรวมทั้งหมดที่หาได้
มาปรับปรุงโค้ดของเรากัน:
let sum = 0;
for (let elem of arr) {
sum += elem;
}
let avg = sum / arr.length;
console.log(avg);