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

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์สองอาร์เรย์ดังกล่าว ฟังก์ชันของเราควรส่งคืนอาร์เรย์แรกเวอร์ชันที่กรองใหม่ (ในกรณีนี้คือ arr1) ที่มีเฉพาะอ็อบเจ็กต์ที่มีคุณสมบัติชื่อที่ไม่มีอยู่ในอาร์เรย์ที่สอง (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' } ]