You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Profit/Losses数组的期间变动平均值?

计算Profit/Losses的期间变动平均值

首先,你原来的简单平均值代码存在错误——直接把数组profitLosses除以长度是无效的,因为数组是引用类型,不能直接做算术运算。正确的简单平均值计算应该先求和再除以长度,示例如下:

// 修正后的简单平均值计算
const total = profitLosses.reduce((sum, val) => sum + val, 0);
const simpleAvg = profitLosses.length ? total / profitLosses.length : 0;
console.log('简单平均值:', simpleAvg);

接下来讲期间变动平均值:这个值指的是相邻两个周期的Profit/Losses差值的平均值,即第2项减第1项得到第1个变动值,第3项减第2项得到第2个变动值,以此类推,最后计算所有变动值的平均。

实现步骤:

  • 遍历数组,计算每一对相邻元素的差值(后项 - 前项)
  • 收集所有差值到一个新数组
  • 计算这个差值数组的总和,再除以差值的数量(原数组长度-1)

完整代码示例:

var profitLosses = [867884, 984655, 322013, -69417, 310503, 522857, 1033096, 604885, -216386, 477532, 893810, -80353, 779806, -335203, 697845, 793163, 485070, 584122, 62729, 668179, 899906, 834719, 132003];

// 计算期间变动数组
const changes = [];
for (let i = 1; i < profitLosses.length; i++) {
  changes.push(profitLosses[i] - profitLosses[i - 1]);
}

// 计算变动平均值
const changeTotal = changes.reduce((sum, val) => sum + val, 0);
const changeAvg = changes.length ? changeTotal / changes.length : 0;

console.log('期间变动数组:', changes);
console.log('期间变动平均值:', changeAvg);

也可以用更简洁的链式写法:

const changeAvg = profitLosses.slice(1).reduce((acc, curr, idx) => {
  return acc + (curr - profitLosses[idx]);
}, 0) / (profitLosses.length - 1);

console.log('期间变动平均值:', changeAvg);

注意:如果原数组长度小于2,变动平均值没有实际意义,此时可以返回0或者做相应的边界处理。

内容的提问来源于stack exchange,提问作者dre86dre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 00:45:32