我是JavaScript的初学者。我有一个长度为[2,6,8,5]
的数组。我想计算另一个代表每个元素位置的数组。
例如:[1,3,9,17,22]
其中1是第一个元素的位置,3是第二个元素的位置
(1 + 2), 9 = (1 + 2 + 6) … and 22 (1 + 2 + 6 + 8 + 5)
。
谢谢你的帮助
我用这个,但我不是shure这是最好的方法
var lengthOfWords = [2,6,8,5];
var subPosition = 0 ;
var positionOfWords = [1]
for (var x = 0; x < lengthOfWords.length; x++) {
subPosition += lengthOfWords[x];
positionOfWords[x+1] = subPosition +1 ;
}
console.log(positionOfWords);
答案 0 :(得分:0)
您可以缩小数组并以1的起始值开始,并使用最后一个元素添加实际值。
last a sum result ---- ---- ---- --------------- 1 1 2 3 1, 3 3 6 9 1, 3, 9 9 8 17 1, 3, 9, 17 17 5 22 1, 3, 9, 17, 22
var array = [2, 6, 8, 5],
result = array.reduce((r, a) => r.concat(r[r.length - 1] + a), [1]);
console.log(result);
ES5
var array = [2, 6, 8, 5],
result = array.reduce(function (r, a) {
return r.concat(r[r.length - 1] + a);
}, [1]);
console.log(result);