目标
用嵌套循环给大数组去重,成了数据导入中最慢的一环。本配方用 Set 的成员检查替代嵌套扫描,使去重平均复杂度从 O(n²) 降到 O(n),并用基准对比验证加速;提醒对象需按稳定键字符串去重,且集合版本保留首次出现顺序。
步骤要点
- 用 Set 成员检查替代嵌套扫描。
- 对对象按稳定键字符串去重。
- 用基准对比新旧实现。
- 确认输出与慢版本一致且顺序保留。
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;
}
排错提示
- 对象引用不同需按稳定键去重。
- 内存随唯一项增长。
- 不处理模糊重复。
适用边界
- 要求键可哈希。
- 不处理模糊匹配。