この投稿では、JavaScriptの2つのSet
から、その共通要素(intersection)を調べる方法を紹介します。
2つのSet
の共通要素を調べる方法
const a = new Set(['🦊', '🐱', '🐶'])
const b = new Set(['🐱', '🐶', '🐹'])
const intersection = new Set([...a].filter(x => b.has(x)))
console.log(intersection)
//=> Set { '🐱', '🐶' }
このnew Set([...a].filter(x => b.has(x)))
の部分が共通要素のSetを作るコードです。やっていることは、1つ目のセットの配列を作った上で、filter
メソッドでその要素ひとつひとつに対して「2つ目のセットの要素かどうか」の基準で絞り込み、最終的に絞り込み結果の配列をSet
に戻しているだけです。
汎用的に使う場合は関数化しておくといいかもしれません。
function intersectionOf(a, b) {
return new Set([...a].filter(x => b.has(x)))
}