删除数组中的重复项,为什么此代码不起作用

Removing duplicates in an Array, why this code is not working

本文关键字:为什么 代码 不起作用 数组 删除      更新时间:2023-09-26

嗨,我在下面写了代码

function unique(th){
   var obj = {};
   for(var i = 0, n = th.length; i < n ; i++){
       obj[th[i]] = th[i];
   }    
   obj.length = n ;
   return Array.prototype.slice.call(obj);
}

但是,这给了我不需要的输出。请帮助我纠正这一点。这是小提琴。

我不知道

你的逻辑是什么,所以我构建了一个稍微不同且有效的函数,试图让它尽可能清晰:

function unique(th){
   var yetseen = {};
   var newarray = [];
   for(var i = 0, n = th.length;  i < n ; i++){
       var val = th[i];
       if (!yetseen[val]) {
           yetseen[val] = true;
           newarray.push(val);
       }
   }    
   return newarray;
}

使用下划线.js

它是一个库,其中包含许多用于操作数组的函数。

_.uniq

_.uniq(array, [isSorted], [iterator]) 别名:唯一 产生一个 数组的无重复版本,使用 === 测试对象 平等。如果您事先知道数组已排序,则传递 对于isSorted来说为true,将运行更快的算法。如果你愿意 根据转换计算唯一项,传递迭代器 功能。

alert(_.uniq([2,2,1,4,5,6,2,9,1,1,6,3,2,1,9,6,4], false)​);​ //yields 2,1,4,5,6,9,3