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

合計を行っているようなものなので、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()このソリューションでは、実際の配列 ( ) と比較的新しいブラウザー機能を使用していることを前提としています。

于 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 に答える