LoginSignup
34
28

More than 5 years have passed since last update.

【JavaScript】filterとincludesで配列のデータを抽出

Last updated at Posted at 2019-01-13

2つの配列の要素を比較

JavaScriptで2つの配列を比較して、他方の配列に含まれる要素のみを抽出したい場面があり、
同じような内容の記事が見当たらなかったので書きました。

おことわり

forを使った場合との比較を書いたりすると親切なんでしょうが
自分の備忘用なので超サラっと書いてます。あしからず。

環境

node v11.6.0

やりたいこと

2つの配列alphabet, targetがあって、

var alphabet = [{id:1, name:'alpha'}, 
                {id:2, name:'beta'},
                {id:3, name:'gamma'}, 
                {id:4, name:'delta'}];

var target = [1, 4];

配列alphabetの中から、idの値がリストtargetの要素と一致するものだけを抽出したい。
(↓こんなアウトプットが欲しい。)

[ { id: 1, name: 'alpha' }, { id: 4, name: 'delta' } ]

SQLならこんな感じ。

SELECT * FROM alphabet WHERE id in (target);

使うもの

filterとindexOf includes。(※includesのほうが良いよとご指摘いただいたので修正)
さっそくコードを、

console.log(
  alphabet.filter(x => target.includes(x.id));
)

結果

[ { id: 1, name: 'alpha' }, { id: 4, name: 'delta' } ]

はい出来上がり!

34
28
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
28