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