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 を使いましょう。
関連記事
あわせて読むと理解が深まる関連記事をまとめました。
| トピック | 記事 |
|---|---|
| 重複行の削除 | 重複行の削除|dedupeの使い方の使い方と注意点まとめ実務ガイド開発者向け実践ガイド実践2実践3実践4実践5実践6 |
| Web Vitals INP改善ガイド | Web Vitals INP改善ガイド|scheduler.yield・Long Task・Input Delay対策(2026) |
| CSS JS Minify 圧縮 | CSS JS Minify 圧縮|本番向けファイルサイズ削減 |
| JS Minify と難読化の違い | JS Minify と難読化の違い|本番 JS 最適化 |
| Subresource Integrity (SRI) 完全ガイド | Subresource Integrity (SRI) 完全ガイド|CDN スクリプトの integrity・crossorigin・フォールバック |
| 1フレームは何秒・何ms? 60fpsと120fpsの計算方法 | 1フレームは何秒・何ms? 60fpsと120fpsの計算方法 |
| AIクローラー対応 robots.txt・llms.txt 設定ガイド 2026 | AIクローラー対応 robots.txt・llms.txt 設定ガイド 2026|GPTBot・ClaudeBot・Google-Extended・GEO戦略 |
| APIキャッシュ設計ガイド | APIキャッシュ設計ガイド|ETag・Cache-Control・304・CDNキャッシュキーの実務 |
| Web APIのエラーハンドリング設計 | Web APIのエラーハンドリング設計|RFC 9457・error_code・400/422/409の使い分け |
| Web APIのべき等性(Idempotency)設計 | Web APIのべき等性(Idempotency)設計|二重決済を防ぐ実装ガイド |
| API設計におけるページネーションの使い分け:オフセット型とカーソル型の比較 | API設計におけるページネーションの使い分け:オフセット型とカーソル型の比較 |
| APIのレート制限(Rate Limiting)実装ガイド | APIのレート制限(Rate Limiting)実装ガイド|アルゴリズム選定と429エラーの適切なハンドリング |