首页 > 解决方案 > 当属性值在另一个数组中时,如何从数组中删除对象?

问题描述

我有这个带有 ID 的数组:

const idsArr = [1,2,3]

而且我还有一个包含对象的数组,如下所示:

const arrOfObj = [
  {id: 1, name: 'a'},
  {id: 2, name: 'b'},
  {id: 3, name: 'c'},
  {id: 4, name: 'd'},
  {id: 5, name: 'e'},
]

我如何过滤arrOfObj并仅获取那些id值不包含在其中的对象idsArr

预期结果:

[     
  {id: 4, name: 'd'},
  {id: 5, name: 'e'}
]

标签: javascriptarraysfilter

解决方案


创建一个集合(为了提高效率),然后...过滤:

const arrOfObj = [ {id: 1, name: 'a'}, {id: 2, name: 'b'}, {id: 3, name: 'c'}, {id: 4, name: 'd'}, {id: 5, name: 'e'},];

let set = new Set([1,2,3]);
let result = arrOfObj.filter(({id}) => !set.has(id));

console.log(result);


推荐阅读