1、数组对象去重
(1)根据某属性去重
let data = [ { name: 'ws', id: 1 }, { name: 'cj', id: 2 }, { name: 'jf', id: 3 }, { name: 'll', id: 1 }, { name: 'wwx', id: 2 }, { name: 'ws', id: 3 } ]
let obj={}
let newArr = data.reduce((item,next)=>{
//根据id去重
if(!obj[next.id]){
obj[next.id]=true
item.push(next)
}
return item
},[])
console.log(newArr )
(2)去除重复对象
function deleteObj(itemArr){
var arr=[]
var newObj={}
for(var i = 0;i < itemArr.length;i++){
var keys=Object.keys(itemArr[i]);
keys.sort(function(a,b){
return (Number(a) - Number(b))
})
var str=""
for(var j = 0;j < keys.length; j++){
str +=JSON.stringify(keys[j])
str +=JSON.stringify(itemArr[i][keys[j]])
}
if(!newObj.hasOwnProperty(str)){
arr.push(itemArr[i])
newObj[str]=true
}
}
return arr
}
const data=[
{name:'xl',age:12},
{name:'xl',age:12},
{name:'xlccc',age:12},
{name:'xlssss',age:12},
]
console.log(deleteObj(data))
2、数组去重
(1)es6
var arr=[1,2,4,5,6,7,7,8,4,21]
arr = [...new Set(arr)]
console.log(arr)
(2)reduce
let arr = ['x','w','s','r','t','x','j','v','a']
let newArr=arr.reduce(function(a,current){
if(a.indexOf(current)===-1){
a.push(current)
}
return a
},[])
console.log(newArr)
(3)filter
const array = [2,3,4,5,3,2,13,23];
array.filter((item,idx,arr) => arr.indexOf(item) === idx);