首页 > 代码库 > 数组去重方法总结
数组去重方法总结
方法1 filter和indexOf(能区分数字1和字符串‘1’):
function unique(arr){
return arr.filter((item,index,array) => {
return array.indexOf(item) >= index
})
}
方法2 循环加splice(能区分数字1和字符串‘1‘,可改造用于对象比较):
function unique(arr){
var len = arr.length;
for(var i=0;i<len-1;i++){
for(var j=i+1;j<len;j++){
if(arr[i] === arr[j]){
arr.splice(j,1);
}
}
}
}
方法3 hash检测类型(能区分数字1和字符串‘1’)
function unique(arr){
var hash = {},res = [];
var item,key;
for(var i=0,len=arr.length;i<len;i++){
item = arr[i];
key = typeof(item) + item;
if(!hash[key]){
hash[key] = true;
res.push(item);
}
}
return res;
}
方法4 hash覆盖(不能区分数字1和字符串‘1’)
function unique(arr){
var hash = {};
for(var i=0,len=arr.length;i<len;i++){
hash[arr[i]] = arr[i];
}
return Object.keys(hash);
}
数组去重方法总结