Array.prototype.unique = function(){
var result = [];
this.forEach(function(v){
if(result.indexOf(v) < 0){
result.push(v);
}
});
return result;
}
这个是什么做法呢 就是说 逐个查找数组项 如果数组的结果的下标 也就是indexof大于0 说明有多个重复 就不推进push数组里面 小于0的就推进数组里面 然后返回就好了 很简单
也可以用hash去重
Array.prototype.unique = function(){
var result = [],hash = {};
this.forEach(function(v){
var type = typeof(v); //获取元素类型
hash[v] || (hash[v] = new Array());
if(hash[v].indexOf(type) < 0){
hash[v].push(type); //存储类型
result.push(v);
}
});
return result;
}
先排序 再去重
`Array.prototype.unique = function(){
var result = [this[0]];
this.sort();
this.forEach(function(v){
v != result[result.length - 1] //仅与result最后一个元素比较
});
}`