添加数组javascript的元素

时间:2014-09-23 01:04:35

标签: javascript

好吧,对于那里的某些天才来说这可能很容易,但我很难挣扎......

这是针对我正在使用滑块进行的项目,我想要一个滑块可用于捕捉点/增量的数组......我可能会以精神的方式解决这个问题,但是一切都很好!请帮忙。

var frootVals = [1,2,3,4,5];
var frootInc = [];

    for (i=0; i<=frootVals.length; i++) {
            if (i == 0){
            frootInc.push(frootVals[i]);
            }
            else{
            frootInc.push(frootInc[i-1] += frootVals[i])
            }
        };

我要做的是创建新数组,使其值为frootVals中数组元素的总和。

我正在寻找的结果是:

fruitInc = [1,3,6,10,15]

5 个答案:

答案 0 :(得分:1)

对于不同的观点,我喜欢功能性方法:

var frootVals = [1,2,3,4,5];
var frootInc = [];
var acc = 0;
frootVals.forEach(function(i) {
    acc = acc + i;
    frootInc.push(acc);
});

答案 1 :(得分:0)

这样做:

var frootVals = [1,2,3,4,5];
var frootInc = [];

for (i=0; i < frootVals.length; i++) { // inferior to the length of the array to avoid iterating 6 times
    if (i == 0) {
        frootInc.push(frootVals[i]);
    }
    else {
        frootInc.push(frootInc[i-1] + frootVals[i]) // we add the value, we don't reassign values
    }
};

alert(JSON.stringify(frootInc));

jsfiddle here:http://jsfiddle.net/f01yceo4/

答案 2 :(得分:0)

var frootVals = [1,2,3,4,5]
  , frootInc = [];

// while i < length, <= will give us NaN for last iteration
for ( i = 0; i < frootVals.length; i++) {
    if (i == 0) {
        frootInc.push(frootVals[i]);
    } else {
        // rather than frootIne[ i-1 ] += ,
        // we will just add both integers and push the value
        frootInc.push( frootInc[ i-1 ] + frootVals[ i ] )
    }
 };

您的代码出现了一些问题,请查看我的代码示例中的注释。希望它有所帮助,

答案 3 :(得分:0)

将您的代码更改为:

var frootVals = [1,2,3,4,5];
var frootInc = [frootvals[0]]; //array with first item of 'frootVals' array

for (i=1; i<frootVals.length; i++) {
    frootInc.push(frootInc[i-1] + frootVals[i]); //remove '='
}

答案 4 :(得分:0)

这是一个非常简单的纯函数方法(不需要变量,副作用或闭包):

[1,2,3,4,5].map(function(a){return this[0]+=a;}, [0]);
// == [1, 3, 6, 10, 15]

如果您对该函数进行命名和取消三明治,则可以反复使用它,与硬编码的var名称,属性名称或for循环不同...