一、数组去重方法
- 前面一个和后面一个进行比较
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[j] == arr[i]){
arr.splice(j,1);
j--;
}
}
}
console.log(arr);
- 使用indexOf()方法
var arr1 = [5,4,10,15,30,40,40,50,30,40];
//定义一个空数组存没有重复的数据
var temp =[];
for(var i=0;i<arr1.length;i++){
if(temp.indexOf(arr1[i]) == -1){
temp.push(arr1[i]);
}
}
console.log(temp);
- 使用filter()方法
var arr3 = [5,4,10,15,30,40,40,50,30,40];
var arr4=arr3.filter(function(value,index,self){
return self.indexOf(value) === index;
});
console.log(arr4);
- 使用forEach()方法
var arr5 = [5,4,10,15,30,40,40,50,30,40];
var obj ={};
var res =[];
arr5.forEach(item =>{
if(!obj[typeof item + item]){
obj[typeof item + item] = true;
return res.push(item);
}
})
console.log(res);
- 使用Es6中Set()方法
var arr2 = [5,4,10,15,30,40,40,50,30,40];
var sum = new Set(arr2);
console.log(sum);
二、数组中对象去重
数组中对象去重和数组去重基本差不多
var str = [
{name:"张三",id:2},
{name:"李四",id:3},
{name:"王五",id:3},
{name:"赵六",id:2},
{name:"三七",id:1}
]
- 前面对象 id 和后面对象 id 比较
for(var i=0;i<str.length-1;i++){
for(var j=i+1;j<str.length;j++){
if(str[i].id == str[j].id){
str.splice(j,1)
}
}
}
console.log(str);
- 使用indexOf()方法
//定义一个空数组存没有重复的数据
var temp =[];
//第二种:indexOf
for(var i=0;i<str.length;i++){
if(temp.indexOf(str[i].id) == -1){
temp.push(str[i]);
}
}
console.log(temp);
- 使用includes()方法
//定义一个空数组存没有重复的数据
var temp1 =[];
for(var i=0;i<str.length;i++){
// 判断是否包含,不包含就添加
if(!temp1.includes[str[i].id] ){
temp1.push(str[i]);
}
}
console.log(temp1);
- Es6中some()方法
var str2 =[];
for(var val of str){
if(!str2.some(item => item.id == val.id)){
str2.push(val);
}
}
console.log(str2);