我基本上是在寻找一种更简单的方法:
heights.forEach((height, i) => {
var p = i > 0 ? i -1 : 0;
this.breakingPoints.push(height+heights[p])
})
如果我输入的数组是:
[0,2,5,5]
我想输出
[0,2,7,12]
答案 0 :(得分:9)
您可以使用带有闭包的map()
方法返回新数组。
const arr = [0,2,5,5];
const result = (s => arr.map(e => s += e))(0);
console.log(result)

答案 1 :(得分:1)
您可以简单地存储变量以推入一个变量,该变量允许您自动将新值与其相加而不检查索引。
var total = 0;
heights.forEach(height => {
this.breakingPoints.push(total += height);
})
结果将是:
[0, 2, 7, 12]
答案 2 :(得分:0)
您可以使用forum post方法。
let inputArray = [1, 2, 3, 4];
let outputArray = [];
inputArray.reduce(function(accumulator, currentValue, currentIndex) {
return outputArray[currentIndex] = accumulator + currentValue; }, 0);
答案 3 :(得分:0)
您可以使用reduce和spread运算符来连接值:
const input = [0, 2, 5, 5];
const output = input.reduce((acc, val) => [...acc, (acc[acc.length - 1] ? acc[acc.length - 1] : 0) + val],[]);
或者使用< ES6
var output = input.reduce(function (acc, val) { return acc.concat([(acc[acc.length - 1] ? acc[acc.length - 1] : 0) + val]); }, []);