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

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


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' } ] 
はい出来上がり!

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)