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 함수를 작성해야 합니다. 우리의 함수는 동일한 name 속성을 가진 두 번째 배열(이 경우 arr2)에 포함되지 않은 name 속성을 가진 객체만 포함하는 첫 번째 배열(이 경우 arr1)의 새로운 필터링된 버전을 반환해야 합니다.

따라서 이 경우 출력은 다음과 같아야 합니다. -

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