为什么我的重复删除脚本没有捕获唯一值

Why is my duplicate removal script not capturing unique values

本文关键字:唯一 脚本 我的 删除 为什么      更新时间:2023-09-26

>我正在尝试从排序列表中删除重复项。

这个剧本是我写的。

for(var i = 0; i < duplicateAuthors.length - 1; i++){
        if(duplicateAuthors[i] == duplicateAuthors[i + 1]) { continue; } 
        else{
            uniqAuthors.push(duplicateAuthors[i]);
        }
}

它有效,但它不捕获列表中的唯一值。我做错了什么?

var uniqAuthors = [];
for(var i = 0; i < duplicateAuthors.length; i++){
        if(uniqAuthors.indexOf(duplicateAuthors[i]) == -1) {
            uniqAuthors.push(duplicateAuthors[i]);
        }
}

上面的代码检查对象是否存在于数组中,如果没有,则将其添加到数组中。因此,最后我们将有一个唯一值数组。

由于对象键必须是唯一的,我意识到您也可以执行以下操作来隔离唯一值。

var uniqs = {};
for(var i = 0; i < duplicateAuthors.length ; i++){
        uniqs[duplicateAuthors[i]] = null;
}
var uniqAuthors = Object.keys(uniqs);

这将利用它已经排序的事实。

var previous;
var current;
for(var i = 0; i < duplicateAuthors.length; i++){
    current = duplicateAuthors[i];
    if (current && current != previous) {
        uniqAuthors.push(current);
        previous = current;
    }
}