Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

필터의 JavaScript가 다른 배열과 연관 배열

<시간/>

다음과 같은 두 개의 객체 배열이 있다고 가정합니다. -

const data = [
   {"XD_A":"XDL","XD_B_1":"38","XD_B_2":"PB"},
   {"XD_A":"XDR","XD_B_1":"51","XD_B_2":"PB"},
   {"XD_A":"XDL","XD_B_1":"58","XD_B_2":"PB"},
   {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"},
   {"XD_A":"XDL","XD_B_1":"76","XD_B_2":"PB"},
   {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"}
];
const filters =[{"XD_A":"XDR"},{"XD_B_1":"38"}];

우리는 각각 첫 번째와 두 번째 인수와 같은 두 개의 배열을 취하는 JavaScript 함수를 작성해야 합니다.

그런 다음 함수는 두 번째 배열(필터 배열)에 있는 모든 키-값 쌍을 포함하는 첫 번째 배열(데이터 배열)에서 해당 개체만 선택해야 합니다.

그리고 함수는 모든 객체를 새 객체로 밀어넣고 해당 객체를 반환해야 합니다.

위 배열의 경우 반환된 배열은 다음과 같이 정확히 두 개의 객체를 포함해야 합니다. -

const output = [
   {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"},
   {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"}
];

예시

이에 대한 코드는 -

const data = [
   {"XD_A":"XDL","XD_B_1":"38","XD_B_2":"PB"},
   {"XD_A":"XDR","XD_B_1":"51","XD_B_2":"PB"},
   {"XD_A":"XDL","XD_B_1":"58","XD_B_2":"PB"},
   {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"},
   {"XD_A":"XDL","XD_B_1":"76","XD_B_2":"PB"},
   {"XD_A":"XDR","XD_B_1":"38","XD_B_2":"PB"}
];
const filters =[{"XD_A":"XDR"},{"XD_B_1":"38"}];
const filter = (data, filters) => {
   return data.filter(e => {
      try{
         filters.forEach(o => {
            Object.keys(o).forEach(key => {
               if(e[key] !== o[key]) throw new 1;
            });
         });
         return true;
      }
      catch(e){
         return false;
      }
   });
}
console.info(filter(data, filters));

출력

콘솔의 출력은 -

[
   { XD_A: 'XDR', XD_B_1: '38', XD_B_2: 'PB' },
   { XD_A: 'XDR', XD_B_1: '38', XD_B_2: 'PB' }
]