어떤 사람들이 답변한 질문에 대한 정보를 포함하는 두 개의 서로 다른 객체 배열이 있다고 가정해 보겠습니다.
const arr1=[ { PersonalID: '11', qusetionNumber: '1', value: 'Something' }, { PersonalID: '12', qusetionNumber: '2', value: 'whatever' }, { PersonalID: '13', qusetionNumber: '3', value: 'anything' }, { PersonalID: '14', qusetionNumber: '4', value: 'null' } ]; const arr2=[ { qusetionNumber: '2', chID: '111', cValue: 'red' }, { qusetionNumber: '2', chID: '112', cValue: 'green'}, { qusetionNumber: '2', chID: '113', cValue: 'blue' }, {qusetionNumber: '3', choiceID: '114', cValue: 'yellow'}, {qusetionNumber: '4', choiceID: '115', cValue: 'red'} ];
고유한 개인에 따라 두 배열에 모두 존재하는 이 데이터를 그룹화하는 함수를 작성해야 합니다. 즉, 고유한 각 개인에 대한 질문과 선택을 묘사하는 하나의 객체입니다.
따라서 최종 출력은 다음과 같아야 합니다. -
const output = [{ personalID:11, qusetionNumber:1, value: 'Something' }, { personalID:12, qusetionNumber:2, value: 'whatever', choice:[ { qusetionNumber: '2', chID: '111', cValue: 'red' }, { qusetionNumber: '2', chID: '112', cValue: 'green'}, { qusetionNumber: '2', chID: '113', cValue: 'blue' } ] }, { personalID:13, qusetionNumber:3, value: 'anything', choice:[ { qusetionNumber: '3', chID: '114', cValue: 'yellow' } ] }, { personalID:14, qusetionNumber:4, value: 'null', choice:[ { qusetionNumber: '4', chID: '115', cValue: 'red' } ] }];
예시
이에 대한 코드는 -
const arr1=[ { PersonalID: '11', qusetionNumber: '1', value: 'Something' }, { PersonalID: '12', qusetionNumber: '2', value: 'whatever' }, { PersonalID: '13', qusetionNumber: '3', value: 'anything' }, { PersonalID: '14', qusetionNumber: '4', value: 'null' } ]; const arr2=[ { qusetionNumber: '2', chID: '111', cValue: 'red' }, { qusetionNumber: '2', chID: '112', cValue: 'green'}, { qusetionNumber: '2', chID: '113', cValue: 'blue' }, {qusetionNumber: '3', choiceID: '114', cValue: 'yellow'}, {qusetionNumber: '4', choiceID: '115', cValue: 'red'} ]; const mergeArray = (arr1 = [], arr2 = []) => { let i = -1; const copy = arr1.slice(); copy.forEach(obj => { const helper = []; arr2.forEach(obj2 => { if(obj.qusetionNumber == obj2.qusetionNumber){ i++; helper.push(arr2[i]); }; }) if(helper.length !== 0){ obj.choice = helper; }; }) return copy; }; console.log(JSON.stringify(mergeArray(arr1, arr2), undefined, 4));
출력
콘솔의 출력은 -
[ { "PersonalID": "11", "qusetionNumber": "1", "value": "Something" }, { "PersonalID": "12", "qusetionNumber": "2", "value": "whatever", "choice": [ { "qusetionNumber": "2", "chID": "111", "cValue": "red" }, { "qusetionNumber": "2", "chID": "112", "cValue": "green" }, { "qusetionNumber": "2", "chID": "113", "cValue": "blue" } ] }, { "PersonalID": "13", "qusetionNumber": "3", "value": "anything", "choice": [ { "qusetionNumber": "3", "choiceID": "114", "cValue": "yellow" } ] }, { "PersonalID": "14", "qusetionNumber": "4", "value": "null", "choice": [ { "qusetionNumber": "4", "choiceID": "115", "cValue": "red" } ] } ]