JavaScriptで配列の積集合を取得する

簡単に配列同士の積集合を求めると

配列に重複がない場合

const arr0 = [1,2,3,4,5]
const arr1 = [1,3,5,7,9]

const productSet = arr0.filter((val)=>{
  return arr1.indexOf(val) !== -1
})

console.log(productSet)
// [ 1, 3, 5 ]

というように求められますが、配列に重複があった場合には

const arr0 = [1,2,2,5,5]
const arr1 = [1,3,5,7,9]

const productSet = arr0.filter((val)=>{
  return arr1.indexOf(val) !== -1
})

console.log(productSet)
// [ 1, 5, 5 ]

のようになってしまいます

配列に重複があるかもしれない場合

なので配列に重複の可能性がある場合には下記の様に最後setを使用してユニークにします。

const arr0 = [1,2,2,5,5]
const arr1 = [1,3,5,7,9]

const productSet = arr0.filter((val)=>{
  return arr1.indexOf(val) !== -1
})

const uniqueProductSet = Array.from(new Set(productSet))
console.log(uniqueProductSet)
// [ 1, 5 ]