配列・行の重複削除(dedupe)のやり方と注意点
ユーティリティ JavaScript
結論:30秒で重複を削除する
- JavaScript配列(数値/文字列):
[...new Set(array)] - JavaScriptオブジェクト配列:
Array.from(new Map(arr.map(x => [x.id, x])).values()) - テキスト/改行リスト: 下のオンラインツールで一括一意化
1. オンライン重複行削除ツール
テキストエリアに1行1項目のリストを貼り付けることで、重複している行を即座に削除・抽出できます。
🧹 この場で重複を削除する
2. JavaScriptで配列の重複を削除するコード例
① 単純な値(文字列・数値)の配列:Set を使用
Set は重複した値を保持しないため、スプレッド構文 [...] と組み合わせることで最速で一意化できます。
const numbers = [1, 2, 2, 3, 4, 4, 5];
const uniqueNumbers = [...new Set(numbers)];
console.log(uniqueNumbers); // [1, 2, 3, 4, 5]
② オブジェクト配列(特定キーで一意化):Map を使用
特定プロパティ(例: id や email)でユニークにしたい場合は、Map のキー重複上書きを利用します。
const users = [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" },
{ id: 1, name: "Alice" },
];
const uniqueUsers = Array.from(
new Map(users.map(user => [user.id, user])).values()
);
console.log(uniqueUsers);
// [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]
3. 注意点(ハマりどころ)
- 前後の空白・改行コードの差異
- 見た目が同じ文言でも、末尾にスペースや
\rが入っていると別要素と判定されます。トリム処理 (.map(s => s.trim())) を行ってから比較してください。
- 見た目が同じ文言でも、末尾にスペースや
- 大文字・小文字の区別
- デフォルトでは
Exampleとexampleは別物として扱われます。区別せず一意化したい場合は判定前に.toLowerCase()で正規化します。
- デフォルトでは