第一种:indexOf方法
function unique(arr){
var tmpArr = [];
for(var i=0; i<arr.length; i++){
if(tmpArr.indexOf(arr[i]) == -1){ // ==i也是一种方案
tmpArr.push(arr[i]);
}
}
return tmpArr;
}
[1,2,3,"3"]
第二种:hash
function unique(arr){
var tmpArr = [], hash = {};
for(var i=0;i<arr.length;i++){
if(!hash[arr[i]]){
hash[arr[i]] = true;
tmpArr.push(arr[i]);
}
}
return tmpArr;
}
还是跟第一种有区别的。
[1,2,3]
第三种:排序
function unique(array){
array.sort();
var re=[array[0]];
for(var i = 1; i < array.length; i++){
if( array[i] !== re[re.length-1]){
re.push(array[i]);
}
}
return re;
}
[1,2,3,"3"]
第四种:ES5+ES6
function unique(arr){
var obj = {};
arr.forEach(function(item,index) {
obj[item] = 1
})
return Object.keys(obj);
}
["1","2","3"]
第五种:ES6
Array.from(new Set([2,3,3,4,5]))
[1,2,3,"3"]
第六种:ES6
[...new Set([2,3,3,4,5])]
[1,2,3,"3"]
声明: 本文由( zongyan86 )原创编译,转载请保留链接: 答案是丰富多彩的系列6:数组去重