Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การกรองอาร์เรย์ของอ็อบเจ็กต์โดยอ้างอิงอีกอาร์เรย์หนึ่งใน 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'}];

เราต้องเขียนฟังก์ชันที่รับสองอาร์เรย์ดังกล่าว ฟังก์ชันควรคืนค่าอาร์เรย์ที่กรองแล้วจากอาร์เรย์แรก (arr1) ที่มีเฉพาะอ็อบเจ็กต์ที่คุณสมบัติ name ไม่อยู่ในอาร์เรย์ที่สอง (arr2) ด้วยคุณสมบัติ name เดียวกัน

ผลลัพธ์ที่คาดหวัง

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' } ]