繁体   English   中英

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

[英]Remove object, with a common property, from array

如果在该数组中的另一个 object 中找到 object 中的单个属性,是否有办法从数组中删除 object?

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和 object 来存储每辆车的值。

 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 function 通过指定键来删除数组中的重复项:

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

如果你有兴趣,这里是文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM