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保持不变,不会被零干扰
- 如果当前元素不是0,就把它加到
这样就既保留了数组里零元素的位置,又让非零元素正确累加了之前的有效总和~
备注:内容来源于stack exchange,提问作者Hari
相关产品推荐
相关产品推荐

