2017-10-08 36 views
0

我是JavaScript的初学者。我有一个长度为[2,6,8,5]的数组。我想计算另一个代表每个元素位置的数组。 ex:[1,3,9,17,22]其中1是第一个元素的位置,3是第二个元素的位置如何计算javascript中的位置数组?

(1 + 2), 9 = (1 + 2 + 6) … and 22 (1 + 2 + 6 + 8 + 5)。 感谢你的帮助

我用这个,但我不舒尔这个

+1

你有什么尝试到目前为止? – arsho

+1

*“职位”*是什么意思? – charlietfl

+1

欢迎来到SO。请理解,SO不是免费的编码服务。你必须尝试自己解决问题。如果无法正常工作,请发布您尝试的内容,我们会帮助您解决问题。 –

回答

0

你可以减少阵列和一个的起始值开始,最好的办法

var lengthOfWords = [2,6,8,5]; 
 
var subPosition = 0 ; 
 
var positionOfWords = [1] 
 

 
for (var x = 0; x < lengthOfWords.length; x++) { 
 

 
\t subPosition += lengthOfWords[x]; 
 
\t positionOfWords[x+1] = subPosition +1 ; 
 
} 
 

 
console.log(positionOfWords);
取最后一个添加实际值的元素。

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

+0

这段代码的工作原理似乎比我的要快,但我使用的插件(ECMASCript 5.1)似乎并不支持胖箭头功能。 –

+0

@SylvainParent,你可以使用标准功能的ES5版本。 –

+0

谢谢!现在我的作品将尝试了解它是如何工作的 –