← 中文资源

简体中文版本

用集合优化数组去重

用哈希集合替代 O(n²) 的嵌套循环去重,使大数组在线性时间内完成。

阅读英文原文

目标

用嵌套循环给大数组去重,成了数据导入中最慢的一环。本配方用 Set 的成员检查替代嵌套扫描,使去重平均复杂度从 O(n²) 降到 O(n),并用基准对比验证加速;提醒对象需按稳定键字符串去重,且集合版本保留首次出现顺序。

步骤要点

  1. 用 Set 成员检查替代嵌套扫描。
  2. 对对象按稳定键字符串去重。
  3. 用基准对比新旧实现。
  4. 确认输出与慢版本一致且顺序保留。
function dedupe(items) {
  const seen = new Set();
  const out = [];
  for (const item of items) {
    if (seen.has(item)) continue;
    seen.add(item);
    out.push(item);
  }
  return out;
}

排错提示

  • 对象引用不同需按稳定键去重。
  • 内存随唯一项增长。
  • 不处理模糊重复。

适用边界

  • 要求键可哈希。
  • 不处理模糊匹配。