複数の配列で重複したデータのみを取得するだけ

はじめに

数学的に言うと共通部分、Intersectionのことです。
AND検索とかで使えるかも。

TypeScriptとJavaScript

const getIntersection = <T>(baseArray: Array<T>, ...arrays: Array<Array<T>>) => {  
  return baseArray.filter(value => {  
    return arrays.every(array => {  
      return array.includes(value);  
    });  
  });  
};  
const getIntersection = (baseArray, ...arrays) => {  
  return baseArray.filter(value => {  
    return arrays.every(array => {  
      return array.includes(value);  
    });  
  });  
};  

getIntersection関数に引数として複数の配列を渡して使います。

console.log(getIntersection([0, 1, 2, 3, 4, 5], [5, 6, 7, 8, 9, 0]));  
// [0, 5]  

引数の1つ目をbaseArrayとして、それをfilterしていくという形です。
残りの配列すべてにbaseArrayの値(value)が含まれていた場合trueとなり、そうでない場合はfalseとなりbaseArrayから取り除かれます。

おわりに

配列操作大好き。