JavaScriptで配列の重複を削除する最短コード|Setとfilterの使い分け

JavaScript プログラミング アルゴリズム
結論

現代のJavaScriptなら [...new Set(array)] が最短かつ最速。

重複削除の3つの手法

1. Setを使う(推奨)

もっともシンプルで読みやすい方法です。Set オブジェクトは重複する値を保持できない性質を利用します。

const array = [1, 2, 2, 3, 1];
const unique = [...new Set(array)]; // [1, 2, 3]

2. filterを使う

古い環境や、より複雑な条件(オブジェクトの重複など)を扱いたい場合に便利です。

const unique = array.filter((value, index, self) => self.indexOf(value) === index);

3. lodashのuniqを使う

大規模なプロジェクトで既に lodash を導入しているなら、_.uniq(array) を使うのが安全です。

🧹 この場で重複を削除する

パフォーマンスの比較

データ量が数万件を超える場合、filter + indexOf は計算量が $O(n^2)$ になるため非常に遅くなります。一方、Set はハッシュマップ的な内部構造を持つため $O(n)$ に近く、大規模データでも高速に動作します。基本的には Set を使いましょう。