다음과 같은 값의 배열이 있다고 가정합니다 -
const arr = [
{
value1:[1,2],
value2:[{type:'A'}, {type:'B'}]
},
{
value1:[3,5],
value2:[{type:'B'}, {type:'B'}]
}
]; 그러한 배열을 취하는 JavaScript 함수를 작성해야 합니다. 그런 다음 우리 함수는 객체의 "유형" 속성에 따라 데이터가 그룹화되는 배열을 준비해야 합니다.
따라서 위의 배열의 경우 출력은 다음과 같아야 합니다. -
const output = [
{type:'A', value: [1,2]},
{type:'B', value: [3,5]}
]; 예시
이에 대한 코드는 -
const arr = [
{
value1:[1,2],
value2:[{type:'A'}, {type:'B'}]
},
{
value1:[3,5],
value2:[{type:'B'}, {type:'B'}]
}
];
const groupValues = (arr = []) => {
const res = [];
arr.forEach((el, ind) => {
const thisObj = this;
el.value2.forEach(element => {
if (!thisObj[element.type]) {
thisObj[element.type] = {
type: element.type,
value: []
}
res.push(thisObj[element.type]);
};
if (!thisObj[ind + '|' + element.type]) {
thisObj[element.type].value =
thisObj[element.type].value.concat(el.value1);
thisObj[ind + '|' + element.type] = true;
};
});
}, {})
return res;
};
console.log(groupValues(arr)); 출력
콘솔의 출력은 -
[
{ type: 'A', value: [ 1, 2 ] },
{ type: 'B', value: [ 1, 2, 3, 5 ] }
]