다음과 같은 두 개의 객체 배열이 있다고 가정합니다. -
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' } ]