1、利用对象的属性去重
思路:每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复
function unique(arr){
var res =[];
var json = {};
for(var i=0;i<arr.length;i++){
if(!json[arr[i]]){
res.push(arr[i]);
json[arr[i]] = 1;
}
}
return res;
}
console.log(unique([1,2,3,4,6,4,5,1])); // [1,2,3,4,6,5]
2、利用下标查询
function unique(arr){
var newArr = [arr[0]];
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique([1,2,3,4,5,6,1,2,3])); // [1,2,3,4,5,6]
3、利用排序方法
function unique(arr){
var newArr = arr.sort(); // [1,1,2,2,3,3,4,5,6]
var result = [];
for(var i=0;i<newArr.length;i++){
if(result[result.length-1] != newArr[i]){
result.push(newArr[i]);
}
}
return result;
}
console.log(unique([1,2,3,4,5,6,1,2,3])); // [1,2,3,4,5,6]
4、利用ES2015/ES6的 Set和Array.from()
function unique(arr){
var obj = new Set(arr); // 返回一个对象
var newArr2 = Array.from(obj); // 返回一个新数组
return newArr2;
}
console.log(unique([1,2,3,4,5,6,6,5,4])); // [1,2,3,4,5,6]