您好我已写下面的代码
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);
}
但是,这给了我不必要的输出。请帮我纠正一下。 here是小提琴。
答案 0 :(得分:1)
我不知道你的逻辑是什么,所以我建立了一个稍微不同且有效的功能,试图让它尽可能清晰:
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;
}
答案 1 :(得分:0)
它是一个包含许多用于操作数组的函数的库。
_.uniq(array,[isSorted],[iterator])别名:unique生成一个 无重复版本的数组,使用===来测试对象 平等。如果您事先知道数组已排序,则传递 对于isSorted,运行更快的算法。如果你想 根据转换计算唯一项,传递迭代器 功能
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