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

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

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

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

Q&A

解決済

3回答

286閲覧

JavaScript: `hoge === piyo || hoge === fuga` をもっと簡潔に書く方法はあるか

dwayne_johnson

総合スコア86

JavaScript

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

1グッド

1クリップ

投稿2019/01/24 02:32

基本的なことです。

しばし試してみたのですが、思いつかず。

hogeがpiyoまたはfugaの場合にはhogeを、そうでない場合にはnullを代入したいです。

javascript

1const value = hoge === piyo || hoge === fuga ? hoge : null;

これを、もう少し簡潔に書きたいです。
具体的には、hoge === の重複を無くしたいです。

イメージとしては、const value = hoge === (piyo || fuga) ? hoge : null;このような感じですが、これではもちろん上手くいきません。

もし何か良い書き方をご存知でしたら、教えてください。
そんなものは存在しない場合も、その旨を教えていただけると助かります。

よろしくお願いします。

dotnetuseryamag👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

シンプルかどうかは微妙ですが、hogeを1度で済ませる方法はあります。

// IE11などではPolyfillが必要 const value = [piyo, fuga].includes(hoge) ? hoge : null; // Polyfill不要 const value = ~[piyo, fuga].indexOf(hoge) ? hoge : null;

投稿2019/01/24 02:39

maisumakun

総合スコア145183

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

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

dwayne_johnson

2019/01/24 02:45

なるほどという感じで、勉強になりました。 ありがとうございました。
maisumakun

2019/01/24 02:57

細かいことですが、NaNや+0と-0の違いといった特殊な数値を考慮する場合、コードの書き方によって結果が異なってくることがありえますので、注意が必要です。
guest

0

良いかどうかはわかりませんが。

js

1// piyo等がテキストor数値の場合 2const value = [ piyo, fuga ].includes( hoge ) ? hoge : null;

【Array.prototype.includes() | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/includes

投稿2019/01/24 02:38

kei344

総合スコア69398

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

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

dwayne_johnson

2019/01/24 02:46

勉強になりました。 ありがとうございました。
guest

0

一度配列にしてからArray.prototype.includesすれば一撃だし、
アロー関数Array.prototype.findの併用でやってもいい

JavaScript

1// ----- includes ----- 2var hoge = 123, piyo = 123, fuga = 123; 3[piyo, fuga].includes(hoge) ? hoge : null; 4// 123 5 6// ----- find ----- 7var hoge = 123, piyo = 123, fuga = 123; 8[piyo, fuga].find(it => it === hoge) || null; 9// 123 10 11hoge = 123, piyo = 123, fuga = 234; 12[piyo, fuga].find(it => it === hoge) || null; 13// 123 14 15hoge = 123, piyo = 234, fuga = 123; 16[piyo, fuga].find(it => it === hoge) || null; 17// 123 18 19hoge = 123, piyo = 234, fuga = 345; 20[piyo, fuga].find(it => it === hoge) || null; 21// null

投稿2019/01/24 02:53

編集2019/01/31 03:45
miyabi-sun

総合スコア21158

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問