fix(currentSteamCurve): 修复用能流速曲线平均值计算问题
- 在计算平均值时增加了对无效值(NaN)的过滤 - 确保只有有效的数值参与平均值计算,提高数据准确性 -目前的计算逻辑是: 通过 processedData.filter(item => !item.isBreakPoint) 过滤掉标记为“停电”期间插入的断点 (isBreakPoint: true)。 使用 validData.map(e => parseFloat(e[valueField])) 将需要计算的字段值转换为浮点数。 使用 reduce 计算总和并除以数量得到平均值。 问题可能出在第二步或第三步: parseFloat(e[valueField]) 的结果: 如果 e[valueField] 的原始值是 null, undefined, 空字符串 "" 或其他非数字格式,parseFloat 会返回 NaN (Not a Number)。 reduce((a, b) => a + b, 0) 的行为: 当数组中包含 NaN 时,reduce 的累加结果也会变成 NaN。 后续计算: NaN / validValues.length 的结果是 NaN。最后对 NaN 调用 .toFixed(2) 的结果在不同 JavaScript 环境下可能不一致,但通常是字符串 "NaN",而不是负数。 然而,既然显示了负数,可能存在更隐藏的问题,或者是在 reduce 过程中,某些非数字值(如 null)被隐式转换为了 0,但某些其他值导致了异常。最稳妥的方法是在计算平均值之前,显式地过滤掉所有非数字(NaN)的值。 我将修改 processDataBreaks 函数,在计算平均值之前增加一步,过滤掉 map 操作后可能产生的 NaN 值。master
parent
dc79271196
commit
6b0ca7a207
Loading…
Reference in New Issue