【问题标题】:How I can delete objects from array when their property value is in another array?当属性值在另一个数组中时,如何从数组中删除对象?
【发布时间】:2021-05-31 14:39:49
【问题描述】:

我有这个带有 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'}
]

【问题讨论】:

  • arrOfObj.filter((o) => !idsArr.includes(o.id));

标签: javascript arrays filter


【解决方案1】:

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

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);

【讨论】:

    【解决方案2】:
    var result = arrOfObj.filter(a => !idsArr.includes(a.id));
    console.log(result);
    

    【讨论】:

      【解决方案3】:

      如果你知道数组方法就很简单了

      可以这样实现

      function filterArrayWithId(arrOfObj, idsArr) {
        arrOfObj.filter(obj => !idsArr.includes(obj.id))
      }
      

      对任何疑问发表评论

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-01-11
        • 2015-06-19
        • 1970-01-01
        • 2022-08-18
        • 2019-12-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多