如何修改JavaScript平均值代码以排除多个0值?
解决多0值排除的平均值计算问题
你的代码目前只能处理单个输入为0的情况,当多个输入是0时会计算错误。要实现仅对大于0的数字计算平均值,可以用更灵活的数组方式来处理,不用逐个判断每个变量:
优化后的代码
// 收集所有输入的数字 const numbers = [ parseInt(prompt("first number: "), 10), parseInt(prompt("second number: "), 10), parseInt(prompt("third number: "), 10), parseInt(prompt("fourth number: "), 10) ]; // 过滤出大于0的有效数字,同时排除非数字情况 const validNumbers = numbers.filter(num => typeof num === 'number' && !isNaN(num) && num > 0); // 计算平均值,处理没有有效数字的情况 const average = validNumbers.length > 0 ? validNumbers.reduce((sum, num) => sum + num, 0) / validNumbers.length : 0; // 全是0或无效输入时返回0,也可改成提示文本 document.getElementById("output").textContent = average;
代码说明
- 把所有输入存入数组,避免重复的变量和冗余判断逻辑
filter方法直接筛选出大于0且是有效数字的数值,自动排除所有0和非数字输入reduce方法快速计算有效数字的总和- 加入长度判断,防止全是0时出现除以0的错误
原问题代码(仅作对比)
var num1 = parseInt(prompt("first number: "),10); var num2 = parseInt(prompt("second number: "),10); var num3 = parseInt(prompt("third number: "),10); var num4 = parseInt(prompt("fourth number: "),10); if (num1==0){ document.getElementById("output").textContent = ((num2 + num3+ num4) / 3); } if (num2==0){ document.getElementById("output").textContent = ((num1 + num3+ num4) / 3); } if (num3==0){ document.getElementById("output").textContent = ((num1 + num2+ num4) / 3); } if (num4==0){ document.getElementById("output").textContent = ((num1 + num2+ num3) / 3); } else { document.getElementById("output").textContent = ((num1 + num2 + num3+ num4) / 4); }
内容的提问来源于stack exchange,提问作者Adrian Cincu
相关产品推荐
相关产品推荐

