jsフラグは2つが限界? フラグの立て方と制限について

このQ&Aのポイント
  • JavaScriptにおいて、フラグを立てることができるのは2つまでです。フラグの立て方を紹介したサイトでは、trueまたはfalseの場合分けしかなく、3つ目のフラグを立てる方法は存在しません。
  • 例えば、1から100までの数の中から3の倍数をtrueとして返すプログラムを作成することは可能です。しかし、それ以降の条件、例えばfalseの中から5の倍数にtrueを返すプログラムを作成することはできません。
  • JavaScriptでは、フラグを制御するために変数を使用します。フラグを立てるかどうかの条件は、if文や論理演算子を組み合わせて記述します。しかし、フラグは2つまでしか立てることができないため、3つ以上の条件に対応するプログラムを作成することはできません。
回答を見る
  • ベストアンサー

jsは、フラグは2つが限界???

javascritにおいて、フラグを立てられるのは、2つが限界なのでしょうか。 jsにおけるフラグの立て方を紹介したサイトでは、いずれも、trueもしくはfalseの場合分けしかなく、3パターン目の記述が存在しませんでした。 例えば、1~100までの間の数を設定し、その中から、3の倍数をtrueと返し、それ以外をfalseと返すプログラムなら設定可能ですが、そこから先、falseの中から、5の倍数にtrueと返し、他をfalseと返すプログラムを作ろうとするのは、無理なのでしょうか。 もし可能であれば、回答をお願いできたら幸いです。 尚、フラグは、var 何ちゃらFlag = true;と設定した場合を想定します。省略せずにお願いします。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.6

基本を学ばずにググって済まそうとすると、いろいろわからないことが出てくるのでしょうね。 「フラグ」と呼ぶ変数は普通は真と偽だけですが、別に、普通の変数なので値はいろいろ代入できるので、0,1,2,3,4 でもいいし、"A", "B", "C" でもいいし、どんな値でも代入できます。 var fooFlag = "A"; var gooFlag = 99; 真偽値しか入れないフラグの場合は、if文では if(xxxFlag) などと変数をそのまま書けますが、真偽値以外の値が入るフラグの場合は if(fooFlag=="A")のように値と比較する必要があります。

semboku_love
質問者

お礼

詳しいご説明ありがとうございます。

その他の回答 (6)

回答No.7

「or」です。

回答No.5

あ、ごめん^^別の値を返したかったのね^^ なら、3の倍数なら「3」を返して、 5の倍数なら「5」を返して、 どちらでもないなら、「0」を返すってことなら、 ありかも・・・ フラグって言葉を使うから、0/1(二値)って誤解が生まれるだけかも! 返り値は、Bool 以外に Int でもいいんですから(数値って事ね) そんだけで、全部解決する気がしてきた・・・

  • t_ohta
  • ベストアンサー率38% (5078/13272)
回答No.4

質問者さんが書かれているのは、3の倍数もしくは5の倍数なら TRUE で、それ以外が FALSE という事ですから、フラグは2値で済みますよね。 フラグというの基本的に旗が立っているか寝ているかの2値でしかありません。 複数の状態を表したい場合はステータスと言う場合があります。 ステータスが1なら3の倍数、2なら5の倍数、0ならそれ以外と言った具合ですね。

回答No.3

この場合フラグもう関係ないのでは? if ((n%3)==0) return(true); if ((n%5)==0) return(true); return(false); 3で割り切れる=元々が3の倍数だったらtrue 5で割り切れる=元々が5の倍数だったらtrue どちらでもないなら、false を返してます。 特に、フラグはいりません。 思うにフラグへのこだわりを一度捨ててみると 道が開ける気がします。 上のを1行で書くなら return ( (n%3)==0? true:(n%5)==0? true:false ); return直後の"("は省略できます。

  • agehage
  • ベストアンサー率22% (2552/11346)
回答No.2

Switch文ではダメ?

  • wormhole
  • ベストアンサー率28% (1620/5655)
回答No.1

プログラミングで「フラグ」といった場合は、on/off, true/false といった2つの値のどちらかだけが入る変数や状態の事をいいます。 javascriptの限界というわけではなく「フラグ」が元々そういうものなんです。

関連するQ&A

  • 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;という形になると思います。 これをさらに分岐するとき、どういう風な書き方をするのでしょうか。 それとも、別なプログラムが必要ですか。

  • 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型なら、パターンはある程度余裕(無限じゃないかも)をもたせることできるからです。

  • ちょっとした記述に関する疑問

    どちらでもいいような内容かもしれませんが、よろしくお願いします。 ---------------------------------- flag = false; if(num < 0) { num *= -1; flag = true; } //numを使って何かの処理 ~~ if(flag) { //処理 num *= -1; } ---------------------------------- 例として、変数numが負だったらフラグをtrueにして、 最後にそのフラグをもとに処理を行うという一連の動作があった場合に、 if(num < 0) { num *= -1; flag = true; } というふうにフラグを後に記述するのか if(num < 0) { flag = true; num *= -1; } というふうにフラグを先に記述するのか がふと気になったのですが、みなさんはどちらでやっているのでしょうか?

  • フラグから区分値に置換するにはどうすればいいですか

    フラグから区分値に置換するにはどうすればいいですか。 以下はその例文です。 フラグでは、基本的に立てたり、倒したりするもので、 yesかnoの2通りしか分岐をさせることができません。 つまり、else ifが使えないということです。 一方区分値は複数の分岐をさせることができます。 なので、これにはelse ifが使えます。 それはいかに記述があります。 https://www.gixo.jp/blog/382/ そこで、以下の部分を区分値に置換するにはどのようにすればいいですか。 フラグから区分値に置換した事例を紹介してくれているサイトは皆無です。 以下は、そのコードです。 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; }

  • 列車走行位置で、フラグによる分岐から変えたいです。

    列車走行位置で、フラグによる分岐から、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文にして、先ほどのjavascriptの文章を書き直すことって可能でしょうか。 僕には天才ではないため、 断片的な情報から、一つの情報をあびきだすのはできないです。 どうか、ご教授願えたら幸いです。

  • トリッキーなJSの文法(prototype.jsなど)が分かりません

    Ajaxの「prototype」( http://www.prototypejs.org/ )などで 下記のようなfunctionの記述方法をよく見かけます。 ▼Prototype.js(ver1.5.0) 20行目抜粋 ---------------------------------------- var Class = {  create: function() {   return function() {    this.initialize.apply(this, arguments);   }  } } -------------------------------------------- でも、私には高度すぎて以下の点がどうしても読み解けません。  (1)var Class = {~~~~~~} が、何をしているのか分かりません。    配列なら[ ]ですし関数か何かを省略した宣言の記述方法なのでしょうか?  (2)create: が何なのか分かりません。必死で調べたら型を宣言しているような感じでしたが、    見慣れない「:」を使ったプログラムで検討もつきません。 私が知っているfunction宣言はこの2パターンのみしか知りません。 ・一般的なfunction宣言  function test(hikisu){   //処理内容  } ・無名関数でのfunction宣言  var a = function(x) {   //処理内容  } ぜひ教えていただけませんでしょうか。 どうぞよろしくお願いします。

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

    列車走行位置で、フラグによる分岐から、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の特急列車だと、土日ダイヤのほかに特定の日付だけ運転する多客期とかってのがありますから、それを実現したいのです。 全文書いてもらわないと困ります。 これが答えられないと、日本のプログラマーは世界に立ち遅れてもしょうがないと思います。😡

  • enchant.js の構文についてです。

    最近ゲームでも作ろうと、 enchant.js を勉強し始めました。 他の方のソースコードを見たりして、勉強しています。 ですが、次のような構文が理解できません。 // 省略 var player = new Sprite(32,32); // 省略 player.isMoving = false; player.direction = 0; player.walk = 0; というところです。 .isMoving とは何ですか? .walk や、.direction といったオブジェクトは存在するのでしょうか。 .image や、.rootScene.addChild などと同じように定義されているのでしょうか。 また、使い方や、動かしたときの動作など、詳しく教えてほしいです。 よろしくお願いします。

  • 空いているビットフラグの確認方法

    空いているビットフラグの中で最小のものを見つけたいのですが、 うまい方法がわからず、どのように作成したら良いか、ご教授お願いします。 たとえば、 int nFlg = 0xFF8F; //上位16ビット省略 というフラグの場合、空いている(ビットフラグの無い)箇所は int nFalse = ~nFlg; // = 0x0070 で求められますが、この中から、最小のフラグ位置(0x0010)を求めたいのです。 (未使用のフラグの中から、使えるビットひとつを選びたいのです・・) 総当りしかないでしょうか? よろしくお願いします。

  • 【VB】もっと簡単に書けないかな?

    お世話になっております。VB2005を最近かじりました。 フォーム上にボタンが100個ほど並んでいます。 グローバル変数としてboolean型のフラグを立てて、 ボタンを押したらボタンの色がピンクに、もう一度押したら元の色にという ごく簡単なプログラムを書きたいのですが、 1個のボタンごとに Private Flag as Boolean   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   Select Case Flag     Case False       Button1.BackColor = Color.Pink       Flag = True     Case True       Button1.BackColor = Color.FromKnownColor(KnownColor.ControlLight)       Flag = False     End Select   End Sub というプログラムを書くと100個同じようなプログラムを書かなくてはいけなくなり、大変手間がかかりメンテも大変です。 もっと簡単にする方法があったら教えていただきたく存じます。

専門家に質問してみよう