如何计算javascript中的位置数组?

时间:2017-10-08 15:11:12

标签: javascript arrays

我是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);

1 个答案:

答案 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);