好吧,对于那里的某些天才来说这可能很容易,但我很难挣扎......
这是针对我正在使用滑块进行的项目,我想要一个滑块可用于捕捉点/增量的数组......我可能会以精神的方式解决这个问题,但是一切都很好!请帮忙。
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]
答案 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循环不同...