根據另一個包含物件陣列的陣列來過濾包含物件的陣列(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+ 瀏覽

開啟您的 職業

完成課程獲得認證

開始
廣告