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 を使いましょう。