配列・行の重複削除(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 を使用

特定プロパティ(例: idemail)でユニークにしたい場合は、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. 注意点(ハマりどころ)

  1. 前後の空白・改行コードの差異
    • 見た目が同じ文言でも、末尾にスペースや \r が入っていると別要素と判定されます。トリム処理 (.map(s => s.trim())) を行ってから比較してください。
  2. 大文字・小文字の区別
    • デフォルトでは Exampleexample は別物として扱われます。区別せず一意化したい場合は判定前に .toLowerCase() で正規化します。