← 中文资源

简体中文版本

带输入校验的加权平均值计算

根据数值数组与权重数组计算加权平均数,拒绝长度不一致、非有限数字、负权重和总权重为零的输入。

阅读英文原文

功能说明

普通平均把所有样本视为同等重要,成绩、评分和指标汇总常需要按权重计算。该函数接收等长的数值数组与权重数组,返回加权平均数。校验覆盖数组类型、空数组、长度不一致、非有限数字、负权重和总权重为零,避免静默产生 NaN 或 Infinity。

关键代码

循环中累加 value 与 weight 的乘积以及权重总和,遇到非法值立即抛错并带上索引,便于定位脏数据。最终用加权和除以总权重。错误类型区分 TypeError 与 RangeError,调用方可以按类别处理。

weightedSum += value * weight;
totalWeight += weight;

使用注意

权重可以为 0,表示该项不参与计算,但总权重必须大于 0。函数不修改输入数组。输入必须为有限数字,NaN 与 Infinity 都会被拒绝。若业务允许负权重,需要放宽校验并自行定义语义。浮点乘法可能带来精度误差,金额场景应改用整数。

验证方式

断言 weightedAverage([80, 90], [1, 3]) 等于 87.5。长度不一致、空数组、负权重和总权重为 0 均抛出 RangeError。包含 NaN 或字符串时抛出 TypeError。权重为 [0, 1] 时应只返回第二个值,并验证输入数组未被修改。