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

JavaScript实现数组元素累加前置有效非零值并保留零值位置的需求咨询

JavaScript实现数组元素累加前置有效非零值并保留零值位置的需求咨询

当然可以实现这个需求啦!你的核心问题是当前的代码会把零也计入累加总和,导致零的位置被替换成了累计值,我们只需要调整一下累加的逻辑,让零元素不参与累加、保持原样就可以了。

先来看你给出的第一个示例数组,用这个逻辑就能得到想要的结果:

var arr = [1,2,0,0,3,0,4];
let sum = 0;
const result = arr.map(num => {
  if (num !== 0) {
    sum += num;
    return sum;
  }
  return 0;
});
console.log(result); // 输出: [1,3,0,0,6,0,10]

再套用你自己测试的durations数组,同样能得到预期输出:

var durations = [1, 4.5,0,0, 3];
let sum = 0;
var array = durations.map(value => {
  if (value !== 0) {
    sum += value;
    return sum;
  }
  return 0;
});

console.log(array); // 输出: [1,5.5,0,0,8.5]

简单解释下逻辑:

  • 我们维护一个sum变量来记录累计的有效总和,初始值设为0
  • 遍历数组时对每个元素做判断:
    • 如果当前元素不是0,就把它加到sum里,然后返回更新后的sum
    • 如果当前元素是0,直接返回0,同时sum保持不变,不会被零干扰

这样就既保留了数组里零元素的位置,又让非零元素正确累加了之前的有效总和~

备注:内容来源于stack exchange,提问作者Hari

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:19:28