题目:对一个对象数组进行去重,所有属性值相同才视为重复
代码:
let list = [
{id:1,name:"aa"},
{id:2,name:"bb"},
{id:3,name:"cc"},
{id:4,name:"dd"},
{id:1,name:"aa"},
{id:3,name:"cc"},
{id:5,name:"dd"},
{id:5,name:"ee"},
]
function func(arr){
let newArr = []
let result = []
for(let i=0;i<arr.length;i++){
let str = JSON.stringify(arr[i])
if(newArr.indexOf(str)==-1){
newArr.push(str)
result.push(arr[i])
}
}
return result
}
let newList = func(list)
console.log(list);
console.log(newList);
要点:对象总是不相等的,list[0]不等于list[4],所以不能使用Set数据结构(如[…new Set(arr)])进行去重。利用JSON的stringify方法将js对象转换为JSON字符串后再进行是否重复的判断即可。