可以使用reduce方法和map方法来实现根据数组对象的某个属性值去重。

假设有一个数组arr,其中包含多个对象,每个对象都有一个属性id,我们要根据id去重。

以下是使用reduce方法的实现代码:

var arr = [
  {id: 1, name: 'Alice'},
  {id: 2, name: 'Bob'},
  {id: 3, name: 'Alice'},
  {id: 4, name: 'David'},
  {id: 2, name: 'Bob'}
];

var uniqueArr = arr.reduce(function(prev, cur) {
  var ids = prev.map(function(obj) {
    return obj.id;
  });
  if (ids.indexOf(cur.id) === -1) {
    prev.push(cur);
  }
  return prev;
}, []);

console.log(uniqueArr);

输出结果为:

[
  {id: 1, name: 'Alice'},
  {id: 2, name: 'Bob'},
  {id: 3, name: 'Alice'},
  {id: 4, name: 'David'}
]

在上面的代码中,我们使用reduce方法遍历原数组arr,并在每次迭代中判断当前对象的id是否已存在于prev数组中。如果不存在,则将当前对象添加到prev数组中,最终得到去重后的数组uniqueArr

另外也可以使用filter方法来实现去重,以下是使用filter方法的实现代码:

var arr = [
  {id: 1, name: 'Alice'},
  {id: 2, name: 'Bob'},
  {id: 3, name: 'Alice'},
  {id: 4, name: 'David'},
  {id: 2, name: 'Bob'}
];

var uniqueArr = arr.filter(function(obj, index, array) {
  return array.findIndex(function(item) {
    return item.id === obj.id;
  }) === index;
});

console.log(uniqueArr);

输出结果与上面的代码相同。在这个实现中,我们使用filter方法过滤出满足条件的对象,即在array中的索引与使用findIndex方法查找到的索引相等的对象。

这两种方法都可以实现根据数组对象的某个属性值去重,具体使用哪种方法可以根据实际情况来选择。

JavaScript 数组对象去重:根据属性值高效移除重复元素

原文地址: https://www.cveoy.top/t/topic/qlS1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录