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

时间:2015-06-19 19:08:00

标签: javascript

我试图从排序列表中删除重复项。

我写了这个脚本。

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

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

3 个答案:

答案 0 :(得分:4)

var uniqAuthors = [];

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

上面的代码检查数组中是否存在对象,如果没有将其添加到数组中。因此,最后我们将得到一系列独特的值。

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

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

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