我正在努力创建一个高尔夫记分卡,并且能够这样做:
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次吗?让每一行都更长......我怎样才能做到更优化?
希望得到帮助并提前致谢: - )
答案 0 :(得分:4)
我是你现有的变量:
var totalpoints = 0;
for(var j = 0; j < i; j++) {
totalpoints += pp0[j];
}
这几乎是为数组发明的!
答案 1 :(得分:2)
这就像你在做一笔钱,所以你可以在JavaScript中使用内置的reduce
函数:
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()
)和相对较新的浏览器功能。
答案 2 :(得分:2)
for (j=0; j<=i; j++) {
totalpoints += pp0[j];
}
答案 3 :(得分:2)
你可以用这个:
for (var j=0;j<i+1;j++) {
totalpoints += pp0[j];
}
答案 4 :(得分:2)
基本上你正在做的是做一笔钱,所以做一个方法可能是一个好的开始:
function sum(counter)
var sum =0;
for(var i = 0; i < counter ; i++) {
sum+= pp0[i];
}
return sum;
}
答案 5 :(得分:2)
你可以尝试写一个循环。
totalPoints = 0;
for(var i=0;i<j;i++)
{
totalPoints += pp0[i];
}
答案 6 :(得分:2)
看起来您只想在i
数组中添加第一个pp0
值,因此请使用循环:
var totalpoints = 0;
for (var index=0; index<i; index++) {
totalpoints += pp0[index]
}