如果其他18次优化javascript

时间:2013-07-16 13:13:29

标签: javascript optimization

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

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次吗?让每一行都更长......我怎样才能做到更优化?

希望得到帮助并提前致谢: - )

7 个答案:

答案 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]
}