質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

1616閲覧

flg処理を変数と配列を使って行う

T.G

総合スコア14

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2018/08/24 00:59

編集2018/08/24 01:37

flgの処理を関数を使って対応したいと考えております。
引数に数字を持たせて、配列から変数名を持ってきて変数に入れ、そのflgがfalseならばtrueにするというう処理を行いたいです

現状ですとflgが文章として認識されてしまいます。

$a_flg
$b_flg...
の変数でflg管理しています。

javascript

1 2var $a_flg = false; 3var $b_flg = false; 4var $c_flg = false; 5 6function flgFunction(number){ 7 //各flgを割り出す 8 var arr = ['$a_flg','$b_flg ','$c_flg'] 9 var this_flg = arr[number]; 10 11 //flgをtrueにする 12 if(this_flg == false){ 13 this_flg = true; 14 } 15 return this_flg; 16 17} 18 19flgFunction(0); //$a_flg

引数1を渡すと
$a_flg が戻り値になります。

true が戻り値になるのが理想です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/08/24 01:10

タグにhtml,cssがありますがどのように関係するのでしょうか。コード内に$から始まる変数のような文字列がありますがこれは?稚拙などと言った自身を卑下する文言を入れるのではなく、説明できる範囲で全て説明してください。
T.G

2018/08/24 01:13

webで使用しておりますので タグを挿入しました、コードには直接関係ありませんでした。$a_flgなどはflg処理で使用している関数名です
m.ts10806

2018/08/24 01:15

コードと言うより要件に関係あるかどうかで判断してください。またこの内容だと要件自体も伝わりにくいように思います。質問を編集して要件をまとめてください。「flgが文章として認識されてしまいます」も結果どうなっているのかこれだけでは見えません。再現出来るコードを提示していただかないと回答しようがないです。
x_x

2018/08/24 01:26

flgって何でしょう? フラグ(flag: 旗)のことでしょうか?
T.G

2018/08/24 01:28

ブーリアン型の変数です。わかりづらくてすいません
x_x

2018/08/24 01:33

現状this_flgには文字列が入っているようですが、booleanにしたいのですか?
guest

回答3

0

ベストアンサー

javascript

1flags = {"$a" : true}; 2flags["$a"] = false;

とかってやってけば、

javascript

1function flgFunction(number){ 2 //各flgを割り出す 3 var arr = ['$a_flg','$b_flg ','$c_flg'] 4 var this_flg = flags[arr[number]]; 5 6 //flgをtrueにする 7 if(this_flg == false){ 8 this_flg = true; 9 } 10 return this_flg; 11 12}

で、できるとは思いますし、まあ動的変数で調べれば、色々とやり方は出てくるんじゃないかとは思いますが、その作りは最悪です。
何がやりたいかは知りませんが、関数が外の(グローバルの)$a_flgを直接参照しにいくようなのは、今のうちにやめたほうがいいと思います。

投稿2018/08/24 01:37

papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T.G

2018/08/24 01:40

もしよろしければ、「関数が外の(グローバルの)$a_flgを直接参照しにいくようなのは、今のうちにやめたほうがいい」点について教えていただけないでしょうか?
papinianus

2018/08/24 01:50

そのような変数は、どこでどう変更されているか分からないでしょう? 誰(関数や処理)がいつどこからsetして、また誰がいつどこからgetするか分からないような値はバグのもとです。 分かるのは最初のうちだけです。作りを見直したほうがいいと思います(最低でも変数のスコープをクラス内で閉じたほうがいいと思います)
T.G

2018/08/24 03:59

ご親切にありがとうございます。勉強不足でした
guest

0

投稿2018/08/24 01:22

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まず例示のものだと$a_flgは返ってきません、$b_flgですね

if(this_flg == false)でチェックしてもfalseではないのでtrueは返りません
なにを根拠に$b_flgがfalseだと思ったのでしょうか?

拡大解釈してかりに$b_flgが「false」という文字だとしてもクォーテーションで
囲んでいるため文字列で判断され、this_flg == falseではヒットしません。

加えてfalseをチェックする演算子は「==」は絶対につかってはいけません
「===」を利用してください。(false以外0やnullなどヒットする場合があります)

投稿2018/08/24 01:35

yambejp

総合スコア114814

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T.G

2018/08/24 01:38

完全に凡ミスです。 宣言を記述忘れました
yambejp

2018/08/24 01:41

それでも var arr = ['$a_flg','$b_flg ','$c_flg'] はNGです、少なくとも var arr = [$a_flg,$b_flg ,$c_flg] としてください
yambejp

2018/08/24 03:32

よくよくかんがえればロジックとして 「もしfalseだったらtrueにして戻せ」って指示しかないつまり 「もしtrueならfalseにする」という考え方がないなら 戻ってくるのはtrueしかないですよね? (もちろんfalseでもtrueでもないものかもしれませんが) それなら何も変換せずにreturn true;と書くだけでしょう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問