-
简单去重,利用对象中某一个属性来实现
let obj = {} let newArr = [] const user = [ { id:1, name:'user1' }, { id:2, name:'user2' }, { id:1, name:'user1' } ] for( let i = 0; i < user.length; i++) { // 利用obj对象快速查询,如果不存在重复就push入新数组 if(typeof obj[user[i].id] === "undefined") { newArr.push(user[i]) obj[user[i].id] = true } } console.log(newArr)这个方法方便快捷,缺点是没有比较对象的每个属性,但是在实际业务场景中往往只需要确定关键属性如id没有重复就行。
-
完全比较,比较所有键值对
let obj = {} let newArr = [] const user = [ { age:20, name:'user1' }, { age:21, name:'user2' }, { age:20, name:'user1' }, { age:20, name:'user3' } ] for( let i = 0; i < user.length; i++) { // 利用obj对象快速查询,如果不存在重复就push入新数组 if(typeof obj[user[i].name] === "undefined") { newArr.push(user[i]) // 将i值存入obj中,便于在下方的比较中取user的值 obj[user[i].name] = i } else { // 如果name的值相同,再遍历对象所有的键值进行比较 for(let key of Object.keys(user[obj[user[i].name]])) { // 如果键值对不一样,push入新数组 if(user[i].key != user[obj[user[i].name]].key) { newArr.push(user[i]) } } } } console.log(newArr)网上找的方法看不懂,自己写了一个,嵌套了for循环效率可能不太高,但简单易懂