根据另一个包含对象数组的数组来过滤包含对象的数组(JavaScript)


假设我们有两个这样的对象数组 −

const arr1 = [{id:'1',name:'A'},{id:'2',name:'B'},{id:'3',name:'C'},{id:'4',name:'D'}];
const arr2 = [{id:'1',name:'A',state:'healthy'},{id:'3',name:'C',state:'healthy'}];

我们需要编写一个接受这两个数组的 JavaScript 函数。我们的函数应返回经过筛选后的新版本的第一组数组(本例中为 arr1),其中仅包含具有 name 属性的对象,这些对象不包含具有相同 name 属性的第二组数组(本例中为 arr2)。

因此,本例中的输出应如下所示 −

const output = [{id:'2',name:'B'},{id:'4',name:'D'}];

示例

相应的代码为 −

const arr1 = [{id:'1',name:'A'},{id:'2',name:'B'},{id:'3',name:'C'},{id:'4',name:'D'}];
const arr2 = [{id:'1',name:'A',state:'healthy'},{id:'3',name:'C',state:'healthy'}];
const filterByReference = (arr1, arr2) => {
   let res = [];
   res = arr1.filter(el => {
      return !arr2.find(element => {
         return element.id === el.id;
      });
   });
   return res;
}
console.log(filterByReference(arr1, arr2));

输出

控制台中的输出为 −

[ { id: '2', name: 'B' }, { id: '4', name: 'D' } ]

更新于: 20-Nov-2020

12K+ 浏览

开启您的 职业

完成课程获得认证

开始
广告
© . All rights reserved.