🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

4回答

1479閲覧

JavaScriptショートハンド「&&」や「||」に似たものを探しています

risu

総合スコア6

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/12/15 22:51

###実現したいこと

以下を実現したいです。

【A】「name」が「'apple'」の場合に「txt」を出す。
【B】そうでなければ何も出さない。

###該当のソースコード
こちらですが、【A】はできても【B】ができません。たとえば「name = 'apples'」にすると、何も出したくないのに「false」が出てしまいます。

js

1const 2txt = 'テキスト', 3name = 'apple', 4p = `<p>${ name=='apple' && txt }</p>`; 5console.log( p );

逆に「&&」を「||」にすれば【B】はできますが、【A】ができなくなります。
(それが「&&」や「||」の機能なので当然ですが。)
###試したこと
下のように普通に三項演算子を使えば実現できる話です。

ですが下のように3つ(1?2:3)ではなく、上のように2つ(1&&2)だけで書きたいと思ったのですけど…、

そんなショートハンドはありませんでしょうか?

js

1const 2txt = 'テキスト', 3name = 'apple', 4p = `<p>${ name=='apple' ? txt : '' }</p>`; 5console.log( p );

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

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

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

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

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

guest

回答4

0

ベストアンサー

考え方がおかしいです。
「何も出したくない」なら出力系の処理をしてはいけません。
「''」を出力したいなら三項演算子が最もコストの低い処理でしょう
どうしてもandとorで処理したいならこう

javascript

1console.log(true && 1 || ''); // 1 2console.log(false && 1 || ''); // ''

投稿2019/12/16 00:18

yambejp

総合スコア116688

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

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

risu

2019/12/16 01:30

ありがとうございます。仰る通りでした。根本的なところから見直します。
guest

0

javascript

1(name=='apple' || '') && txt 2['', txt][+(name=='apple')]

などいろいろ考えてみましたが、たぶん無理だと思います。

投稿2019/12/15 23:37

2KOH

総合スコア999

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

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

risu

2019/12/15 23:58

なるほど。工夫に一票です。どうもありがとうございます。
guest

0

そんなショートハンドはありませんでしょうか?

自分で関数を作ってはどうでしょうか?

javascript

1function conditionalText(condition, content) { 2 return condition ? content : ''; 3}

投稿2019/12/15 23:22

maisumakun

総合スコア145971

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

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

risu

2019/12/15 23:58

アドバイスありがとうございます。
guest

0

すでに解決済みの様ですが、
無理矢理要望を満たすなら以下で。

javascript

1p = `<p>${ (name=='apple' && txt) || '' }</p>`;

投稿2019/12/17 07:37

Calmar

総合スコア43

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

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

Calmar

2019/12/17 07:41 編集

> 上のように2つ(1&&2)だけで書きたいと思ったのですけど…、 3つ目の要件があったのですね。 失礼しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問