• ベストアンサー

if関数で、aまたはbまたはcという選択できますか

if関数で、aまたはbまたはcという選択できますか。 ver num=1; if(x=1||x=3||x=5){ console.log("true"); } else{ console.log("folse"); }。 といった書き方はできませんか。 //ダイヤタイプの定義 const diagram = { WeekDay: 1, //平日ダイヤ Holiday: 2, //休日ダイヤ A: 3, //Aダイヤ B: 4, //Bダイヤ C: 5, //Cダイヤ } //ダイヤを判定する function dayJudge(year, month, date, day) { //フラグ(初期値:平日ダイヤ) var diagramFlag = diagram.WeekDay; //土日判定 if(day == 0 || day == 6) { diagramFlag = diagram.Holiday; } //特別な日 if((month == 10 && date == 12)||(month == 11 && date == 3)||(month == 11 && date == 24)) { diagramFlag = diagram.A; } else if(month == 5 && date == 25) { diagramFlag = diagram.B; } else if(month == 5 && date == 30) { diagramFlag = diagram.C; } return diagramFlag; } ができなくて困っています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

>では、10月12日、11月3日、11月24日に実際になったときにだけ、画面>に表示されるようにして、それ以外の日は、 >画面上に表示されないというのは可能ですか。 可能かどうかは、可能です。 if (dayJudge(year, month, date, day)==diagram.A) { // 画面に表示される }else{ // 画面上に表示されない } (書かれている補足に対してのみなので、これで全文です) 質問に足りていない情報があるのではないか?と 感じているので、思った通りにはならないはずです。 なので、これでは、堂々巡りになっており、 解決からどんどん遠ざかってしまう為、 一旦この板は離脱します。 が、質問は、 >if関数で、aまたはbまたはcという選択できますか なので、これについては最初に投稿した通り 「可能です」が最終回答になります。 備考 ver num=1; → ver ではなく var 。この場合はletをお勧めします。 if(x=1||x=3||x=5){ →作った変数はxではなく、numなので、それが原因 "="(イコール)を1回では代入式なので、比較式である"=="(イコールを2回)にすれば、正しく動作します。 こういう場合、JavaScriptのデバッガーでエラーの原因や 治し方も記載されているので、これらを参考にするのもよいでしょう。

その他の回答 (2)

回答No.2

そもそもですが、「特別ダイヤ」が宣言されていない気がしますが。 //ダイヤタイプの定義 const diagram = { WeekDay: 1, //平日ダイヤ Holiday: 2, //休日ダイヤ A: 3, //Aダイヤ B: 4, //Bダイヤ C: 5, //Cダイヤ } //特別な日 if((month == 10 && date == 12)||(month == 11 && date == 3)||(month == 11 && date == 24)) { diagramFlag = diagram.A; } 言われてる判定はすでにここで行っていますが。 「特別ダイヤ」ではなく、「Aダイヤ」を選択しています。 なのであれば、diagram これに、「特別ダイヤ」を 追加して、diagramFlag = diagram.A;を新しく 追加した、「特別ダイヤ」のキーにすればいいのではないかと。 しかし、しかし、それでは、diagram.A;を参照する ソースがなくなることになるので、だとすると、 質問文に何か情報が足りてない事になってしまうのです。 どういう時何が出ているのを治したいのか? という要件定義に戻る必要があると思います つまり、原因は、 「特別ダイヤ」と「Aダイヤ」を区別する 要件定義がない事が問題なのだと、推測します。 ロジックに関して全文書かせていただきましたが、 いかがでしょうか?

sembokulove
質問者

補足

では、10月12日、11月3日、11月24日に実際になったときにだけ、画面に表示されるようにして、それ以外の日は、 画面上に表示されないというのは可能ですか。 以下を参考にしています。 http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html 僕は天才じゃないため、断片的な情報から組み合わせて、 一つのものを作り上げる能力はありません。 全部お教えください。

回答No.1

if関数で、aまたはbまたはcという選択できますか。 ver num=1; if(x=1||x=3||x=5){ console.log("true"); } else{ console.log("folse"); }。 といった書き方はできませんか。 結論はできます。 if(x=1||x=3||x=5){ ただしこれは「代入」になるので、 if ( x==1 || x==3 || x==5 ) と記載してください。 なお、または(OR)ではなく かつ(AND)の場合は&&も使用できます。 ==演算子よりも||の優先度は低いため、 (x==1) || ... と括弧を使う必要はありません。

sembokulove
質問者

補足

では、10月12日、11月3日、11月24日を特別ダイヤとする際、どのように書き換えればよいのでしょうか。 以下のようなjsだと、うまく動作しません。 僕は天才じゃないため、断片的な情報から組み合わせて、 一つのものを作り上げる能力はありません。 全部お教えください。 //ダイヤタイプの定義 const diagram = { WeekDay: 1, //平日ダイヤ Holiday: 2, //休日ダイヤ A: 3, //Aダイヤ B: 4, //Bダイヤ C: 5, //Cダイヤ } //ダイヤを判定する function dayJudge(year, month, date, day) { //フラグ(初期値:平日ダイヤ) var diagramFlag = diagram.WeekDay; //土日判定 if(day == 0 || day == 6) { diagramFlag = diagram.Holiday; } //特別な日 if((month == 10 && date == 12)||(month == 11 && date == 3)||(month == 11 && date == 24)) { diagramFlag = diagram.A; } else if(month == 5 && date == 25) { diagramFlag = diagram.B; } else if(month == 5 && date == 30) { diagramFlag = diagram.C; } return diagramFlag; } ができなくて困っています。

関連するQ&A

  • 特定の日付に対して、画面の表示がなされるように

    特定の日付に対して、画面の表示がなされるようにしたいです。 例えば、10月12日、11月3日、11月24日に実際になったときにだけ、画面に表示されるようにして、それ以外の日は、 画面上に表示されないというのは可能ですか。 以下を参考にしています。 http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html 以下のjavascriptの文章を試しましたが、全然うまくいきませんでした。 僕は天才じゃないため、断片的な情報から組み合わせて、 一つのものを作り上げる能力はありません。 ですので、断片的な情報ではなく、 全部書いてくださるとありがたいです。 //ダイヤタイプの定義 const diagram = { WeekDay: 1, //平日ダイヤ Holiday: 2, //休日ダイヤ A: 3, //Aダイヤ B: 4, //Bダイヤ C: 5, //Cダイヤ } //ダイヤを判定する function dayJudge(year, month, date, day) { //フラグ(初期値:平日ダイヤ) var diagramFlag = diagram.WeekDay; //土日判定 if(day == 0 || day == 6) { diagramFlag = diagram.Holiday; } //特別な日 if((month == 10 && date == 12)||(month == 11 && date == 3)||(month == 11 && date == 24)) { diagramFlag = diagram.A; } else if(month == 5 && date == 25) { diagramFlag = diagram.B; } else if(month == 5 && date == 30) { diagramFlag = diagram.C; } return diagramFlag; }

  • jsでフラグ型をenum型に変えたい。

    以下のjavascript文があります。 [code] //平日ダイヤか土・休日ダイヤかを判定する function dayJudge(year, month, date, day) { //alert(year +" "+ month +" "+ date +" "+ day) //フラグ var weekdayFlag = true; //月?金なら立てる if(day >= 1 && day <= 5) weekdayFlag = day >= 1 && day <= 5;   else if(day==6) weekdayFlag2 = day == 6 else weekdayFlag = false; //祝日ならたおす if(year == 2013 && month == 1 && date == 1) weekdayFlag = false; else if(year == 2013 && month == 10 && date == 14) weekdayFlag = false; else if(year == 2015 && month == 3 && date == 21) weekdayFlag = false; return weekdayFlag; } [/code] をフラグ型から、enum型に変更できませんか。 フラグではAもしくはBといった2通りの回答しかございませんので、 3つめの分岐は作ることはシステム上無理なのです。 enum型なら、パターンはある程度余裕(無限じゃないかも)をもたせることできるからです。

  • excel 月日から第○週間目と表記する関数

    A1セルに2018/5/25と入力します。 B2に以下の関数 =IF(A1="","",INT((DAY(A1)+WEEKDAY(A1-DAY(A1)+1)-2)/7)+1) 結果 4(週間目)が出ました。 次に MONTH(A1)&"月第"&"週目" 結果 5月第周目 これを 「5月第4週間目」と表記したいのです。 =IF(A1="","",MONTH(A1)&"月第",INT((DAY(A1)+WEEKDAY(A1-DAY(A1)+1)-2)/7)+1&"週目") 結果 「この関数に対して、多すぎる引数が入力されています」とエラーメッセージが出ます。 どこが間違っているのでしょうか? 宜しくお願いします。

  • A∪C=B∪Cのとき、A=B?

    Can you conclude that A=B if A, B, and C are sets such that (もしA, B, Cが下記のような集合であった場合、A=Bと結論付けられるか?) a)A∪C=B∪C? b)A∩C=B∩C? という問題なんですがヒントが欲しいです。 まず、何をすればよいのでしょうか? A=B=Xと仮定して、X∪C=X∪C、よし両辺とも等しい、終了(^_^)/~ …なんてことはないですね?(笑) Unionの定義を使って (X∈A∨X∈C)≡(X∈B∨X∈C)としたとしてもその次はどうすればいいのか…。 最初の一歩を教えて下されば、あとは自分でサラサラサラ~と解いてみせますので どうかその一歩を教えて下さい。

  • C++で日付のプログラミング

    前回も同じ質問をして、自分なりに直してみたのですが、どうもうまく動作しません。 長くなりますが、教えてください。 日付のエラー処理を完全にするというもので、 次のような仕様を満たすようにMyDateクラスを修正せよ。というものです。 1.月、日共に初期値は1とする。 2.月、日の状態を出力するメンバ関数print()を追加する。 3.changeDay関数において、monthに入っている値に対応して適切なエラー処理を行う。    4月の時は日は30まで、5月の時は31まで、みたいな感じです。 4.changeMonth関数において、変更しようとする月に対しdayに入っている値が大きすぎる場合、dayを変更後の最後の日に修正するようにする。例えば、5月31日に設定されている時に、changeMonth(2)が呼ばれた時、monthに2を、dayに28を代入する。 5.うるう年は考慮しなくていい。 #include <stdio.h> class MyDate{ private: int month, day; public: void Date(int, int); void changeMonth(int); //「月」変更用関数 void changeDay(int); //「日」変更用関数 void print(); }; void MyDate::Date(int argMonth,int argDay) { argMonth = 1; argDay = 1; } void MyDate::changeMonth(int argMonth)//メンバ関数(changeMonth)の定義 { if(argMonth >= 1 && argMonth <= 12){ //1~12のときだけ値を更新 month = argMonth; } } void MyDate::changeDay(int argDay)//メンバ関数(changeDay)の定義 { //1~31が入力された場合のみ値を更新 if(argDay >= 1 && argDay <= 31){ day = argDay; } if(month == 1,day > 31){ printf("DATE = %d/%d\n",1,31); }else if(month == 2,day > 28){ printf("DATE = %d/%d\n",2,28); }else if(month == 3,day > 31){ printf("DATE = %d/%d\n",3,31); }else if(month == 4,day > 30){ printf("DATE = %d/%d\n",4,30); }else if(month == 5,day > 31){ printf("DATE = %d/%d\n",5,31); }else if(month == 6,day > 30){ printf("DATE = %d/%d\n",6,30); }else if(month == 7,day > 31){ printf("DATE = %d/%d\n",7,31); }else if(month == 8,day > 31){ printf("DATE = %d/%d\n",8,31); }else if(month == 9,day > 30){ printf("DATE = %d/%d\n",9,30); }else if(month == 10,day > 31){ printf("DATE = %d/%d\n",10,31); }else if(month == 11,day > 30){ printf("DATE = %d/%d\n",11,30); }else if(month == 12,day > 31){ printf("DATE = %d/%d\n",12,31); }else{ printf("DATE = %d/%d\n",month,day); } } int main(int, char **){ MyDate today; today.changeMonth(12); today.changeDay(35); return 0; } それで、 初期化するコンストラクタなんですが、 void MyDate::Date~ のような感じでいいのでしょうか? argMonthとかargDayとかいらないですか?ただMonthとDayだけでいいでしょうか? print()のメンバ関数なんですが、条件式の中に組込むとメンバ関数がいらないんじゃないか、と思ってしまうのですが、条件式の最後のelse{~}の中身を入れればいいでしょうか? あと、today.changeMonth(12); today.changeDay(35); と入れると、12/-858993460とでてしまうのですが、 条件式が間違ってるんでしょうか? 質問が多くてすみません。 よろしければ、回答よろしくお願いします。

  • 列車の走行位置プログラムを作りたいです。

    2022/12/28 13:23 自分は、列車の現在時刻をもとにアニメーションを描画するプログラミングを考案したいなぁと考えております。 以下のサイトを参照しています。 http://r113.web.fc2.com/p/viewer/nankai ... index.html 以下のサイトだと、平日ダイヤと土・休日ダイヤの割り振りしかできません。 フラグをいじってみてわかったことですが、これは、曜日単位で分けるものであり、 日付単位で分けることができません。 <code> //平日ダイヤか土・休日ダイヤかを判定する function dayJudge(year, month, date, day) { //alert(year +" "+ month +" "+ date +" "+ day) //フラグ var weekdayFlag = true; //月?金なら立てる if(day >= 1 && day <= 5) weekdayFlag = true; else weekdayFlag = false; //祝日ならたおす if(year == 2013 && month == 1 && date == 1) weekdayFlag = false; else if(year == 2013 && month == 10 && date == 14) weekdayFlag = false; return weekdayFlag; } </code> 自分は初歩的なプログラミングしかできませんが、 <code> //月?金なら立てる if(day >= 1 && day <= 5) weekdayFlag = true; else weekdayFlag = false; </code> の部分が、いわば、曜日で分かれるように設定してあることに気が付きました。 これを個別の日にち単位で分けるとしたら、どんなプログラムが考えられるでしょうか。 自分は3つ以上のダイヤパターンを考えたいです。

  • excelの関数について

    EXCELでカレンダーを作ったのですが 関数の =IF(C5>=WEEKDAY(DATE($B$2,$B$3,1),1),C5-WEEKDAY(DATE($B$2,$B$3,1),1)+1,"") の意味が分かりません。 どなたか意味を教えてください。

  • エクセル2007 IF関数でしょうか?

    エクセル2007を使用中です。 下記のような表を使用しており、【B】が日曜日の場合、自動的に【C】=リストの中の”休暇”が選択されるように計算式を入れたいのですが、どのような式を入れればいいのでしょうか? IF関数や条件付き書式等で色々試してみますが、中々うまく行きません…。 お詳しい方お知恵をお貸し下さい。     【A】               【B】               【C】 1  9月1日         土曜(=WEEKDAY(A1,1))   ※リストから選択 2  9月2日(=A1+1)   日曜(=WEEKDAY(A2,1))   ※リストから選択 3  9月3日(=A1+2)   月曜(=WEEKDAY(A3,1))    ※リストから選択  …

  • javascriptのフラグは分岐可能ですか。

    //平日ダイヤか土・休日ダイヤかを判定する function dayJudge(year, month, date, day) { //alert(year +" "+ month +" "+ date +" "+ day) //フラグ var weekdayFlag = true; //月〜金なら立てる if(day >= 1 && day <= 5) weekdayFlag = true; else weekdayFlag = false; 以下はフラグの使い方の一例です。 フラグの書き方は、恐らくvar 任意名Flag = True;という形になると思います。 これをさらに分岐するとき、どういう風な書き方をするのでしょうか。 それとも、別なプログラムが必要ですか。

  • 列車位置情報のフラグ分岐をやめたいです。

    列車走行位置で、フラグによる分岐から、enum分岐のint文にしたいです。 以下のプログラムを参考にして作っています。 http://r113.web.fc2.com/p/viewer/jrw-hokuriku-20150314/index.html 以下はjsの文章ですが、 //平日ダイヤか土・休日ダイヤかを判定する function dayJudge(year, month, date, day) { //alert(year +" "+ month +" "+ date +" "+ day) //フラグ var weekdayFlag = true; //月〜金なら立てる if(day >= 1 && day <= 5) weekdayFlag = true; else weekdayFlag = false; //祝日ならたおす if(year == 2013 && month == 1 && date == 1) weekdayFlag = false; else if(year == 2013 && month == 10 && date == 14) weekdayFlag = false; else if(year == 2013 && month == 11 && date == 4) weekdayFlag = false; else if(year == 2013 && month == 12 && date == 23) weekdayFlag = false; else if(year == 2014 && month == 1 && date == 1) weekdayFlag = false; return weekdayFlag; } 僕が具体的に行ったのは、フラグを3つ以上に分けることでした。 しかし、フラグを分けても、ことは解決しかなったです。 フラグというのはBoolean型の一種で、 真偽値を返すものであって、 AorBにしかならないのです。 以下はjavaにおけるbooleanの説明ですが、 javascriptでも同じことがいえると思います。 https://www.sejuku.net/blog/41241 そこで、抜本的な解決策として、enum型のint文があるのを知りました。 https://qiita.com/BMJr/items/5ec834e6513fe5f0ad87 上記のenum型のint文にして、先ほどのjavasc 僕には天才ではないため、 断片的な情報から、一つの情報をあびきだすのはできないです。 どうか、ご教授願えたら幸いです。 フラグだと、1個フラグを作って終わりです。 理由はonかoffのどちらかしかないからです。 実際、土日以外の切り替えの構文を書こうとすると知識がないせいか、切り替えボタンの切り替えができなかったり、真っ白になったりしました。 一方、enum型やそれに付随するint文に注目する理由は、 選択肢が3つ以上あるときにも使えるということです。 例えば、1月1日にはAダイヤ、1月2日にはBダイヤ、1月3日にはCダイヤに切り替わるようなプログラムにしたいのです。 jrの特急列車だと、土日ダイヤのほかに特定の日付だけ運転する多客期とかってのがありますから、それを実現したいのです。 全文書いてもらわないと困ります。 これが答えられないと、日本のプログラマーは世界に立ち遅れてもしょうがないと思います。😡

専門家に質問してみよう