UYOU
2021-04-06 17:17:50
我試圖從數組中排除“ 0”值,以獲得更好的平均結果。我的數組是:[0,0,0,0,80,90,100,0]function clacGPA(gradeData) { var sum, avg = 0; if (gradeData.length) { sum = gradeData.reduce(function (a, b) { return a + b; }); avg = sum / gradeData.length; } document.getElementById('gpa').innerText = avg.toFixed(2);}My expected result should be:avg = 80+90+100 / 3
2 回答

catspeake
TA貢獻1111條經驗 獲得超0個贊
只需先過濾掉0個值:
clacGPA([0, 0, 0, 0, 80, 90, 100, 0]);
function clacGPA(gradeData) {
const filtered = gradeData.filter(item => item !== 0);
const sum = filtered.reduce((a, b) => a + b);
const avg = sum / filtered.length;
console.log(avg);
}

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
可以將函數reduce與累加器一起使用,該累加器存儲計數和總和。
let arr = [0, 0, 0, 0, 80, 90, 100, 0];
let result = arr.reduce((a, c) => {
if (c !== 0) {
a.count++;
a.sum += c;
}
return a;
}, {count: 0, sum: 0});
if (result.count) console.log(result.sum / result.count);
添加回答
舉報
0/150
提交
取消