删除重复项以确保 UserId 唯一的最快方法是什么?大约有 3000 万个 userId 需要检查。
用法
const userIds = {}
const transform = csv.format({ headers: false }).transform((row) => {
if (userIds[row.user_id]) {
console.log(`Found Duplicate ${row.user_id}`);
return false;
} else {
userIds[row.user_id] = 1
}
return row;
});
问题是脚本在大约 20 分钟后挂起。我正在从 CLI 运行脚本。
答案 0 :(得分:2)
Set
对象的算法比数组包含检查的算法快得多。
const userIds = new Set()
const transform = csv.format({ headers: false }).transform((row) => {
if (userIds.has(row.user_id)) {
console.log(`Found Duplicate ${row.user_id}`);
return false;
} else {
userIds.add(row.user_id)
}
return row;
});