Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

หาค่าเฉลี่ยของ Array ยกเว้นค่ามากที่สุดและน้อยที่สุดใน JavaScript

โจทย์

หาค่าเฉลี่ยของ array elements ยกเว้นค่ามากที่สุดและน้อยที่สุด

ตัวอย่างโค้ด

const arr = [1, 4, 5, 3, 5, 6, 12, 5, 65, 3, 2, 65, 9]; 
const findExcludedAverage = arr => { 
  const creds = arr.reduce((acc, val) => { 
    let { min, max, sum } = acc; 
    sum += val; 
    if(val > max){ max = val; }; 
    if(val < min){ min = val; }; 
    return { min, max, sum }; 
  }, { min: Infinity, max: -Infinity, sum: 0 }); 
  const { max, min, sum } = creds; 
  return (sum - min - max) / (arr.length / 2); 
}; 
console.log(findExcludedAverage(arr));

ผลลัพธ์

18.307692307692307

คำอธิบาย

reduce หา min, max, sum พร้อมกันใน 1 pass
min เริ่ม Infinity, max เริ่ม -Infinity
ลบ min และ max ออกจาก sum แล้วหารจำนวน elements ที่เหลือ
หมายเหตุ: สูตร (arr.length / 2) ผิด ควรเป็น (arr.length - 2) (ลบ 2 ตัวที่ exclude) ผลลัพธ์ที่ถูกต้องควรเป็น (sum - min - max) / (arr.length - 2)