判断数组中对象的属性值是否完全相等?

如果name和age完全相同,就算重复,其他属性不管(arr[0]和arr[3]就算),要怎么判断比较好?

arr=[{name:'aa',age:10,sex:'male'...},
{name:'bb',age:12,sex:'female'...},
{name:'cc',age:13,sex:'male'...},
{name:'aa',age:10,sex:'female'...}]
阅读 5.1k
2 个回答

进到else里的话,就是重复了,就可以做一些操作了

arr=[{name:'aa',age:10,sex:'male' },
{name:'bb',age:12,sex:'female' },
{name:'cc',age:13,sex:'male' },
{name:'aa',age:10,sex:'female' }];

let map = new Map();

arr.forEach(obj => {
  if (map.get(obj.name) !== obj.name + '' + obj.age) {
    map.set(obj.name, obj.name + '' + obj.age);
  }
  else {
    console.log('dup');
  }
});

map.forEach((v,k) => {
  console.log(k,v);
});

去重

let a = [
  { name: "aa", age: 10, sex: "male" },
  { name: "bb", age: 12, sex: "female" },
  { name: "cc", age: 13, sex: "male" },
  { name: "aa", age: 10, sex: "female" }
];

let b = a.reduce((acc, cur) => {
  !acc.some(v => v.name === cur.name && v.age === cur.age) && acc.push(cur);
  return acc;
}, []);

console.log(b);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题