0

我正在尝试创建一个高尔夫记分卡,并且能够这样做:

if(i == 0){
    totalpoints = pp0[0];   
} else if(i == 1){
    totalpoints = pp0[0]+pp0[1];    
} else if(i == 2){
    totalpoints = pp0[0]+pp0[1]+pp0[2]; 
} else if(i == 3){
    totalpoints = pp0[0]+pp0[1]+pp0[2]+pp0[3];  
}.... 

这种偏离路线要进行 18 次?使每条线更长......我怎样才能做到这一点更优化?

希望提前帮助和感谢:-)

4

7 回答 7

4

i 是您现有的变量:

var totalpoints = 0;
for(var j = 0; j < i; j++) {
    totalpoints += pp0[j];
}

这几乎就是发明数组的目的!

于 2013-07-16T13:16:58.593 回答
2

reduce这就像你在做一个求和,所以你可以使用JavaScript中的内置函数:

totalpoints = pp0.reduce(function (prev, cur) {
    return prev + cur;
}, 0);

这将遍历 pp0 中的所有元素并返回一个总和。但是,如果您只需要 pp0 的前 n 部分,请使用切片:

totalpoints = pp0.slice(0, n).reduce(function (prev, cur) {
    return prev + cur;
}, 0);

有关详细信息和浏览器兼容性,请参阅mdn

笔记:

此解决方案假定您使用的是真正的数组 ( Array.isArray()) 和相对较新的浏览器功能。

于 2013-07-16T13:16:50.687 回答
2
for (j=0; j<=i; j++) {
    totalpoints += pp0[j];
}
于 2013-07-16T13:16:58.763 回答
2

你可以使用这个:

for (var j=0;j<i+1;j++) {
    totalpoints += pp0[j];
}
于 2013-07-16T13:17:27.120 回答
2

基本上你正在做的是做一个总和,所以做一个方法可能是一个好的开始:

function sum(counter)
var sum =0;
for(var i = 0; i < counter ; i++) {
sum+= pp0[i];
}

return sum;
}
于 2013-07-16T13:17:30.013 回答
2

你可以尝试写一个循环。

     totalPoints = 0;

    for(var i=0;i<j;i++)
    {
          totalPoints += pp0[i];
    }
于 2013-07-16T13:18:47.813 回答
2

看起来您只想将数组i中的第一个值相加pp0,所以使用循环:

var totalpoints = 0;
for (var index=0; index<i; index++) {
    totalpoints += pp0[index]
}
于 2013-07-16T13:20:49.140 回答