如何将JavaScript中多组相似乘除计算式合并为单个通用公式
正确公式推导
你之前的写法错误根源是混淆了「逐对相乘再相加」和「分别求和再相乘」的逻辑,二者在数学上并不等价,只有当所有变量值完全一致时才会得到相同结果,所以无法得到正确值。
原拆分计算的逻辑可以提取公因子1/60,简化为以下单公式:
var finalValue = (a*a1 + b*b1 + c*c1 + d*d1 + e*e1) / 60
代入你的示例数值计算:(10*10 + 1*1 + 1*10 + 15.5*15 +5*5)/60 = 368.5/60 ≈ 6.14,和你拆分计算的结果一致(你示例标注的6.154为四舍五入误差)。
更通用的无硬编码实现
如果需要适配任意数量的对应变量,不需要固定写死5组变量名,可以用数组+reduce实现:
// 第一组数值数组,可任意增减元素 const arr1 = [a, b, c, d, e] // 对应第二组数值数组,元素数量和arr1保持一致即可 const arr2 = [a1, b1, c1, d1, e1] // 逐对相乘累加后除以60,无需随元素数量调整公式 const finalValue = arr1.reduce((sum, val, index) => sum + val * arr2[index], 0) / 60
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

