• ベストアンサー

jsで、比較演算子が使用可なのはif文だけ?

notnotの回答

  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.3

あと、値が真偽値と確定していてtrueとfalse以外あり得なくて、その組み合わせで4分岐したいなら、 switch( A+"-"+ B){ case "true-true": ~~; break; case "true-false": ~~; break; case "false-true": ~~; break; case "false-false": ~~; break; default: 何らかのバグがで真偽値以外が入っていた; } みたいな書き方もします。

sembokulove
質問者

補足

個人的には switch文でも構いませんが、 switch文って確か、 条件式を2つつけることは不可能でしたよね。 あなたが挙げられた例だと、 A01とB01が合致する条件の場合に、180、1600 A01とB02が合致する条件の場合に、200、1800 A02とB01が合致する条件の場合に、220、2000 A02とB02が合致する条件の場合に、240、2200といった具合にはできないです。 if文だと、まず、180と1600が返り値として出てくることはできないし、 switch文だと、A01だったら、A01しか条件式を作れず、A01とB01が合致したらといった具合のパターンは作れず、セレクトボックス1個の時の選択状態しかできません。ヽ(`Д´)ノプンプン

関連するQ&A

  • 比較演算子について

    javascript超初心者です 質問1 型も比較する比較演算子の===は基本的にユーザーからの入力からの値を受け取るときにつかうのでしょうか? 例えばサイト管理者側で設定した変数を使う場合などは==だけでいいでしょうか? var time = 60; if( time === 0 ) { alert('0です') } 質問2 ==より===のほうが処理スピードは遅いですか? よろしくお願いします

  • phpのswitch文について switchはif

    phpのswitch文について switchはifと違って、条件式の中がブール型の論理演算とかではないんですか? 完全に1つの値とかなんですかね? $num1>5とかそういうのは入らないんですか?

    • ベストアンサー
    • PHP
  • switch文をif文に変換

    以下のプログラムをif文に書き換えるとどうなるでしょうか? if文と論理演算子を使って短く書きかえられるらしいのですが。 #include <stdio.h> main() { int no; scanf("%d",&no); switch (no){ case 1: puts("1番です。\n"); break; case 2: puts("2番です。\n"); break; case 3: puts("3番です。\n"); break; case 4: puts("4番です。\n"); break; case 5: puts("5番です。\n"); break; case 6: puts("6番です。\n"); break; default: puts("そんな学年はありません。"); break; } }

  • switch()文で値の大小比較

    例えば$numという変数の値が50以下の場合、 51以上80以下の場合、81以上の場合の処理と分けたい場合、 switch()文でif()のように値の大小比較をする事は出来ないのでしょうか? 以下のような比較を行いたいです。 (以下は例なので、if()で良いだろうという突っ込みは要りません) switch ($num) { case <= 50: 処理1 case <= 80: 処理2 default: 処理3 }

    • ベストアンサー
    • PHP
  • Python in演算子について

    Pythonにin演算子があります。 これは、真偽値をとるため、if文等でつかわれています。 しかし、for文のin for i in a: aはオブジェクトでiはその要素ですが、この場合は真偽値をとりません。 この場合はin演算子としてのinとは考えないのが普通のような気がするのですが? 宜しくねがいます。

  • C言語のswitch case文で、scanfでキーボードから読み込ん

    C言語のswitch case文で、scanfでキーボードから読み込んだ1~12の値によって画面に季節を、3~5は"春"、6~8は"夏"・・・というふうに表示させるプログラムなのですが、if文を使わずにswitch caseで作るには case 3: case 4: case 5:puts("春"); break; ・ ・ ・ と1個1個記述するしかないのでしょうか? もし比較演算子と論理演算子を使って 3<= && <=5 こんな感じに1行にまとめることができるなら教えてください。

  • 条件分岐(IF文)の簡素化

    javascript初心者です。 下記のように7つの変数を利用した組み合わせで、表示内容を変えるjavascriptを組んでいます。 IF文で組んでみたところ、下記のように18通りのIF文になってしまいました。 このjavascriptについては、変数を変えて1ページに10ケ所に配置するため、クライアントマシンは、180通りのIF文計算をすることになるため、簡素化したいと考えています。 switch文だと条件分岐を簡素化出来そうですが、例文では、変数がひとつの場合の例しか載っておらず、複数の場合の記載例がありませんでした。 もっと効率的な方法があると思うため、IF文に限らず良い方法をご指導頂きたくお願いする次第です。 宜しくお願い致します。 var a1 var a2 var a3 var a4 var a5 var a6 var a7 if (a1=="") { document.write("1の作業"); } else if (a2<a3*50) { document.write("2の作業"); } else if ((a2<a3*50) && (a4>=1000) && (a5<=1000) && (a6>=300) && a7="") ) { document.write("2の作業"); } else if ((a2<a3*50) && (a4>=1000) && (a5<=1000) && (a6<299) && a7="") ) { document.write("3の作業"); } else if ((a2<a3*50) && (a4>=1000) && (a5>1000) && (a6>=300) && a7="") ) { document.write("4の作業"); } else if ((a2<a3*50) && (a4>=1000) && (a5>1000) && (a6<299) && a7="") ) { document.write("5の作業"); } else if ((a2<a3*50) && (a4<1000) && (a5<=1000) && (a6>=300) && a7="") ) { document.write("6の作業"); } else if ((a2<a3*50) && (a4<1000) && (a5<=1000) && (a6<299) && a7="") ) { document.write("7の作業"); } else if ((a2<a3*50) && (a4<1000) && (a5>1000) && (a6>=300) && a7="") ) { document.write("8の作業"); } else if ((a2<a3*50) && (a4<1000) && (a5>1000) && (a6<299) && a7="") ) { document.write("9の作業"); } else if ((a2<a3*50) && (a4>=1000) && (a5<=1000) && (a6>=300) && a7="1") ) { document.write("10の作業"); } else if ((a2<a3*50) && (a4>=1000) && (a5<=1000) && (a6<299) && a7="1") ) { document.write("11の作業"); } else if ((a2<a3*50) && (a4>=1000) && (a5>1000) && (a6>=300) && a7="1") ) { document.write("12の作業"); } else if ((a2<a3*50) && (a4>=1000) && (a5>1000) && (a6<299) && a7="1") ) { document.write("13の作業"); } else if ((a2<a3*50) && (a4<1000) && (a5<=1000) && (a6>=300) && a7="1") ) { document.write("14の作業"); } else if ((a2<a3*50) && (a4<1000) && (a5<=1000) && (a6<299) && a7="1") ) { document.write("15の作業"); } else if ((a2<a3*50) && (a4<1000) && (a5>1000) && (a6>=300) && a7="1") ) { document.write("16の作業"); } else if ((a2<a3*50) && (a4<1000) && (a5>1000) && (a6<299) && a7="1") ) { document.write("17の作業"); } else { document.write("18の作業"); }

  • 動画変換フリーソフト

    動画をDVDに書き込めるファイル(おもにmpg2)に変換するフリーソフトでよいものを教えてください。 いろいろ使ってみましたが、それぞれ一長一短がありまして Moo0動画変換器    長所:返還後のファイルサイズがXmediaのように大きくならないので、                    ほとんど4.7GDVDに書き込める               欠点:.時々動画の後半で「音ずれ」が起きることがある Xmediarecord      長所:音ずれは無い               欠点:変換後のファイルサイズが大きくなって4.7Gに入り切れない          AnyVideoConverteor 長所:なし              欠点:ほとんど使い物にならない。とんでもない音ずれ、画面カクカクの動きなど。 なんですが、よろしくお願いします。

  • MySQL接続後の比較演算子について

    お世話になります。 指定した文字列とデータベースにセットされている文字列を比較して、 マッチしたら該当のカラムにセットされている文字列を吐き出し、 マッチしない場合は、エラー文を走らせるプログラムを構築しております。 例えば、 【 ※スクリプト1 】 // データベースに接続する $dsn = "$dbtype:dbname=$dbname;host=$sv"; $conn = new PDO($dsn, $user, $pass); $mail = "aaa@aaa.com"; $question = "好きな国は?"; $answer = "フランス"; $sql = "SELECT id, usr_name, mail, question, answer FROM テーブル名"; $stmt = $conn->prepare($sql); $stmt->execute(); while ($row = $stmt->fetch()) { if($row['mail'] == $mail && $row['question'] == $question && $row['answer'] == $answer){ //条件が一致した場合 echo "ユーザ名:".cnv_enc($row["usr_name"], $enc_disp, $enc_db); exit(); } } $sql = "SELECT id, usr_name, mail, question, answer FROM テーブル名"; $stmt = $conn->prepare($sql); $stmt->execute(); while ($row = $stmt->fetch()) { if($row['mail'] != $mail || $row['question'] != $question || $row['answer'] != $answer){ //条件が一致しない場合 echo "該当なし"; exit(); } } と書くと、【 $mail 】、【 $question 】、【 $answer 】の文字列を変更してもしなくても 正常に結果が返りますが、 【 ※スクリプト2 】 // データベースに接続する $dsn = "$dbtype:dbname=$dbname;host=$sv"; $conn = new PDO($dsn, $user, $pass); $mail = "aaa@aaa.com"; $question = "好きな国は?"; $answer = "フランス"; $sql = "SELECT id, usr_name, mail, question, answer FROM テーブル名"; $stmt = $conn->prepare($sql); $stmt->execute(); while ($row = $stmt->fetch()) { if($row['mail'] != $mail || $row['question'] != $question || $row['answer'] != $answer){ //条件が一致しない場合 echo "該当なし"; exit(); } } と書くと、【 $mail 】、【 $question 】、【 $answer 】の文字列を変更してもしなくても 【 該当なし 】が返ってしまいます。 試しに【 ※スクリプト2 】のif文をelseで更に分岐しても結果は同じでした。 今までデータベースからデータを引っ張って来る段階で、 比較演算子は殆ど使用していなかったので、whileで表示させる際に 条件分岐や演算子の特別な制約があるのでしょうか? 色々な書き方を試してみましたが、長時間作業していると混乱してきましたので、 どうかご教示の程よろしくお願い申し上げます。 PHP 5.3.3 MySQL 5.0.95

    • ベストアンサー
    • PHP
  • if文の演算子について

    if文の演算子について int a=0,b=1,c=1,d=1; if(a==1 && b==1 && c==1 ||d==1){ Printf("yes"); }else{ Printf("no"); } if((a==1 && b==1 && c==1 )||d==1){ Printf("yes2"); }else{ Printf("no2"); } } 上記のif文で出力結果が異なります。 if((a==1 && b==1 && c==1 )||d==1)の方はa=1、b=1、c=1の時もしくはd=1の時と 理解できるのですが、 if(a==1 && b==1 && c==1 ||d==1)の方は、どういう条件の時が当てはまるのでしょうか?