プロが教える店舗&オフィスのセキュリティ対策術

JavaScriptで、ある条件の式の記述がわからず困っています。
既存のJSを改修しようと思っていますが、知識が足らずに行き詰まりました。

内容
a,b,c,dと4つの箱があり、それぞれ最大3点ずつ得点が入れることができ,0~12点までの得点内容によって結果を5つ表示させたい。

条件
・トータルポイントが0~1点の時、結果0を表示。
・トータルポイントが2~12点の時、
 aが一番得点が多い時、結果1を表示。
 bが一番得点が多い時、結果2を表示。
 cが一番得点が多い時、結果3を表示。
 dが一番得点が多い時、結果4を表示。
・得点が同点だった場合、a>b>c>dとなり、結果1を表示。

なんとか自力で下記のような記述をしましたが、結果表示が思ったようになりません。
また、初期変数の記述は省いています。

if(totalPoint <= 1){
resultNum = 0;
} else if(totalPoint >= 2){
if(a >= b >= c >= d >= 1){
resultNum = 1;
} else if(b >= c >= d >= 1){
resultNum = 2;
} else if(c >= d >= 1){
resultNum = 3;
} else if(d >= 1){
resultNum = 4;
}

演算子も含め、どのような記述であればスマートでしょうか?
ご教授いただけますと幸いです。

よろしくお願いいたします。

A 回答 (3件)

resultNum = 1;


if(totalPoint <= 1){
resultNum = 0;
} else if(totalPoint >= 2){
var maxPoint = Math.max(a, b, c, d);
if (a === maxPoint) {
resultNum = 1;
} else if (b === maxPoint) {
resultNum = 2;
} else if (c === maxPoint) {
resultNum = 3;
} else if (d === maxPoint) {
resultNum = 4;
}
}
    • good
    • 0
この回答へのお礼

こういう書き方もあるんですね

ありがとうございます!

お礼日時:2014/11/13 20:26

こんな感じじゃない?



switch(Math.max(a,b,c,d)){
case a:
resultNum = 1;
break;
case b:
resultNum = 2;
break;
case c:
resultNum = 3;
break;
case d:
resultNum = 4;
break;
}
    • good
    • 0
この回答へのお礼

switch分を使用するとコンパクトですね。

ありがとうございます!

お礼日時:2014/11/13 20:23

>if(a >= b >= c >= d >= 1){



入門書を読んで、比較演算子の意味を理解しましょう。

if(totalPoint >=0 && totalPoint <= 1){
resultNum = 0;
} else if(a >= b && a >=c && a>=d){
resultNum = 1;
} else if(b >=c && b >=d && b >=a){
resultNum = 2;
} else if(c >= d && c >=a && c >= b){
resultNum = 3;
} else {
resultNum = 4;
}
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます!

なるほど、このような記述になるのですね。
入門書読んで修行します!
ありがとうございますした!

お礼日時:2014/11/13 20:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!