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

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

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

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

Q&A

解決済

2回答

3125閲覧

論理否定 (!) 演算子を使用すると、includes()とfilterの組み合わせが上手く機能しない

Makimoto

総合スコア3

JavaScript

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

0グッド

0クリップ

投稿2022/06/19 00:52

編集2022/06/19 00:54

Javascriptで2つの配列間における包含関係を知りたい思い、filterとincludesを使用したコードを書いてみたのですが、論理否定 (!) 演算子を使用したケースで、期待する出力が得られず困りはてています。具体的には、以下のコードにおける配列Dの出力結果に0が含まれていない理由がわからないのです。原因についてどなたかご教示いただけますと幸いです。どうぞよろしくお願いいたします。

javascript

1const A = [0, 1, 2, 3]; 2const B = [1, 3]; 3 4const C = A.filter(function(m){ 5 if (B.includes(m)) {return m} 6}) 7 8console.log(C); 9// 期待される出力: [1, 3] 10// 実際の出力: [1, 3] 11 12const D = A.filter(function(m){ 13 if (!B.includes(m)) {return m} 14}) 15 16console.log(D); 17// 期待される出力: [0, 2] 18// 実際の出力: [2]

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

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

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

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

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

guest

回答2

0

以下のようにしたらいいのでは?

const A = [0, 1, 2, 3]; const B = [1, 3]; const C = A.filter(function (m) { return B.includes(m) }) console.log(C); // 期待される出力: [1, 3] // 実際の出力: [1, 3] const D = A.filter(function (m) { return !B.includes(m) }) console.log(D); // 期待される出力: [0, 2] // 実際の出力: [0, 2]

結果:

イメージ説明

投稿2022/06/19 01:15

編集2022/06/19 01:17
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Makimoto

2022/06/19 01:28

簡潔でわかりやすい記述をご教示いただきありがとうございます。こちらの記述を使用することにしたいと思います。
guest

0

ベストアンサー

否定とは関係なくて、要素の値の問題です。
0の場合、return m0が返されますが、これはJavaScript的には偽なので、filterで除外されます。
return trueにすれば良いのではないでしょうか。

他のデータで試していれば自分でも気づけたと思います。

投稿2022/06/19 01:04

otn

総合スコア84505

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

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

Makimoto

2022/06/19 01:10

ご指摘の通り、return trueで期待する結果が得られることが確認できました。迅速なご回答、また大変分かりやすい説明を頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問