上篇我们写到了数组中包含多条对象的去重方式
数组中包含多条对象的去重方式,今天我们就写一下普通数组去重吧.
数组去重的几种方式:
> //我先声明一个数组备用
>var arr=[0,0,1,'a',1,2,'b','a','a']
- arr.filter()
var res = arr.filter(function(ele,index,array){
return index === array.indexOf(ele);
});
console.log(res)
- 先排序再去重
function unique(arr) {
var arr2 = arr.sort();
var res = [arr2[0]];
for(var i = 1; i < arr2.length; i++){
if(arr2[i] !== res[res.length-1]){
res.push(arr2[i]);
}
}
return res;
}
console.log(unique(arr));
- 利用对象的属性去重
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(arr));
4.利用下标查询
function unique(arr){
var newArr = [arr[0]];
for(var i = 1; i < arr.length; i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique(arr));
- 定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中。
function unique(arr) {
var res = [arr[0]];
for(var i = 0; i < arr.length; i++){
var repeat = false;
for(var j = 0; j < res.length; j++){
if(arr[i] == res[j]){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res;
}
console.log(unique(arr));
- es6的set方法
const res = new Set();
var arr =[0,0,1,'a',1,2,'b','a','a'];
arr.forEach(x => res.add(x));
console.log(s);
······后续在加