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

JavaScript의 키 속성을 기반으로 개체 그룹화

<시간/>

각각 같은 크기의 많은 하위 배열을 포함하는 parentArray가 있습니다. 각 하위 배열은 키와 값이라는 두 가지 속성을 포함하는 객체의 배열입니다. 하위 배열 내에서 두 개체는 동일한 키를 가질 수 없지만 모든 하위 배열에는 동일한 n 키 쌍이 있음이 확인되었습니다. 여기서 n은 하위 배열의 크기입니다.

우리의 임무는 키를 객체의 키로 사용하고 값이 해당 특정 키에 대한 모든 값을 포함하는 배열인 객체를 준비하는 것입니다.

다음은 샘플 부모 배열입니다 -

const parentArray = [[
{
   key: 123,
   value: 'India'
}, {
   key: 124,
   value: 'USA'
}, {
   key: 125,
   value: 'Japan'
}, {
   key: 126,
   value: 'Denmark'
}, {
   key: 127,
   value: 'Austria'
},
], [
{
   key: 124,
   value: 'Kenya'
}, {
   key: 126,
   value: 'UK'
}, {
   key: 123,
   value: 'Germany'
}, {
   key: 127,
   value: 'Spain'
}, {
   key: 125,
   value: 'Portugal'
},
]];

부모 배열과 모든 하위 배열을 하나씩 반복하고 일치하는 키를 찾으면 값 배열로 푸시하고 그렇지 않으면 새 값 배열을 만듭니다.

이에 대한 전체 코드는 다음과 같습니다. -

const parentArray = [[
{
   key: 123,
   value: 'India'
}, {
   key: 124,
   value: 'USA'
}, {
   key: 125,
   value: 'Japan'
}, {
   key: 126,
   value: 'Denmark'
}, {
   key: 127,
   value: 'Austria'
},
], [
{
   key: 124,
   value: 'Kenya'
}, {
   key: 126,
   value: 'UK'
}, {
   key: 123,
   value: 'Germany'
}, {
   key: 127,
   value: 'Spain'
}, {
   key: 125,
   value: 'Portugal'
},
]];
const map = {};
parentArray.forEach(arr => {
   arr.forEach(obj => {
      const { key, value } = obj;
      if(map[key]){
         map[key].push(value);
      }else{
         map[key] = [value]
      }
   })
});
console.log(map);

콘솔의 출력은 -

{
   '123': [ 'India', 'Germany' ],
   '124': [ 'USA', 'Kenya' ],
   '125': [ 'Japan', 'Portugal' ],
   '126': [ 'Denmark', 'UK' ],
   '127': [ 'Austria', 'Spain' ]
}