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

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

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

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

Q&A

解決済

4回答

496閲覧

OR条件を使ったif文の挙動

..o

総合スコア28

JavaScript

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

0グッド

0クリップ

投稿2020/10/09 04:26

前提・実現したいこと

お世話になっております。
以下のコードで変数sliceにs,h,o,xのいずれかが含まれている場合は「含む」、含まれていない場合は「含まない」と出力するようにしたいのですが、上手くいきませんでした。

JavaScript

1lat arry = "box"; 2 3let slice = arry.slice(-1); 4 5if(slice === "s" || "h" || "o" || "x"){ 6 console.log("含む"); 7}else{ 8 console.log("含まない"); 9} 10

試したこと・質問

そこでこの様に書き直すと上手くいったのですが、最初のコードでは何故ダメだったのかが分かりません。
これにはどういった違いがあるのでしょうか?

JavaScript

1 2if(slice === "s" || slice ==="h" || slice === "o" || slice === "x"){ 3 console.log("含む"); 4}else{ 5 console.log("含まない"); 6} 7

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

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

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

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

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

guest

回答4

0

こんにちは。

以下の表によると、等価演算子の優先順位は11、ORは6なので、まず===が評価された後に、その結果であるtrueまたはfalse"h"がORで演算されます。
以下、"o" "x"について同様です。

つまり、((((slice === "s") || "h") || "o") || "x")ということです。

一覧表 | 演算子の優先順位 - JavaScript | MDN

投稿2020/10/09 04:36

編集2020/10/09 04:40
Lhankor_Mhy

総合スコア36149

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

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

..o

2020/10/09 04:42

演算子等の優先順位による処理順を考えなくてはいけなかったのですね。 ご回答ありがとうございます。
guest

0

ベストアンサー

「式」なので1つ1つ評価されます。

こうなってると思ってください。

js

1 2if((slice === "s") || ("h") || ("o") || ("x")){

投稿2020/10/09 04:28

m.ts10806

総合スコア80859

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

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

..o

2020/10/09 04:35

ご回答ありがとうございます。 ではこのような場合のOR条件には必ずひとつひとつ比較しなくてはならないのでしょうか?
m.ts10806

2020/10/09 04:37

要件次第です。 配列に入れて存在するか比較、switch など。 結局は「コードの評価」になりますので、基本的に並行評価にはなりません。 おおよそどの言語でも同じかと思います。 別の角度から「それっぽい処理」をすることはできますが、要件と発想次第ですかね。
..o

2020/10/09 04:46

ありがとうございます。大変参考になりました。
guest

0

比較したいのが文字列ならincludesで、配列ならsomeを絡めればよいでしょう

javascript

1const list=["s","h","o","x"]; 2const data1 = "x"; 3console.log(list.includes(data1)); 4const data2 = ["x"]; 5console.log(data2.some((x,y)=>list.includes(x)));

投稿2020/10/09 04:42

yambejp

総合スコア115003

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

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

0

質問の回答ではありませんが正規表現で。という方法もありますね。

JavaScript

1if( arry.search(/.*(s|h|o|x)$/) !== -1 ){ 2 console.log("含む"); 3}else{ 4 console.log("含まない"); 5}

投稿2020/10/09 05:01

Gak

総合スコア83

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

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

..o

2020/10/09 05:09

searchの中の表現の仕方を初めてみました。 調べてみます。 大変参考になります。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問