从数组中删除具有公共 属性 的对象

Remove object, with a common property, from array

如果在该数组中的另一个对象中发现该对象中的单个 属性,是否可以从该数组中删除该对象?

const arr = [{
  car: 'bmw',
  notimportant: 'bla bla',
},{
  car: 'audi',
  notimportant: 'bli bli',
},{
  car: 'bmw',
  notimportant: 'ble ble',
},{
  car: 'golf',
  notimportant: 'blo blo',
}]

我还想添加一个计数器,计算有多少重复项

预期结果:

[{
  car: 'bmw',
  count: 1,
  notimportant: 'bla bla',
},{
  car: 'audi',
  count: 0,
  notimportant: 'bli bli',
},{
  car: 'golf',
  count: 0,
  notimportant: 'blo blo',
}]

您可以将 Array#reduce 与对象一起使用来存储每辆车的值。

const arr = [{
  car: 'bmw',
  notimportant: 'bla bla',
},{
  car: 'audi',
  notimportant: 'bli bli',
},{
  car: 'bmw',
  notimportant: 'ble ble',
},{
  car: 'golf',
  notimportant: 'blo blo',
}];
const res = Object.values(arr.reduce((acc,curr)=>{
  ++(acc[curr.car] = acc[curr.car] || {...curr, count: -1}).count;
  return acc;
}, {}));
console.log(res);

您可以使用 lodash 的 uniqBy 函数通过指定键删除数组中的重复项:

_.uniqBy(arr, (e) => {
  return e.car;
});

Here's the doc如果你有兴趣