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

หาค่าเฉลี่ยในอาร์เรย์ข้อมูลผสม (Mixed Types) - JavaScript

อาร์เรย์: [1,2,3,4,5,"4","12","2",6,7,"4",3,"2"]

แปลงทุกค่าเป็นตัวเลขด้วย parseInt() คำนวณค่าเฉลี่ย

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

const arr = [1,2,3,4,5,"4","12","2",6,7,"4",3,"2"];
const calculateAverage = arr => {
  let sum = 0, count = 0;
  for (let i = 0; i < arr.length; i++) {
    const val = parseInt(arr[i]);
    if (val) {
      sum += val;
      count++;
    }
  }
  return (sum / count);
};
console.log(calculateAverage(arr));

ผลลัพธ์

4.230769230769231

คำอธิบาย: parseInt() แปลงสตริงเป็น int ค่าที่แปลงไม่ได้ (NaN) จะเป็น falsy ถูกข้าม if (val) ไม่รวม 0 (เพราะ 0 เป็น falsy) - อาจเป็น bug ถ้ามี 0 ในข้อมูล

แก้ไข: ใช้ if (!isNaN(val)) แทน เพื่อรองรับ 0