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

JavaScript의 요소를 기반으로 배열의 그룹화

<시간/>

다음과 같은 숫자 배열의 배열이 있다고 가정합니다. -

const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];

각 하위 배열은 엄격하게 두 개의 요소를 포함해야 합니다. 유사한 첫 번째 값을 가진 하위 배열의 모든 두 번째 요소가 함께 그룹화되는 새 배열을 구성하는 함수를 작성해야 합니다.

따라서 위의 배열의 경우 출력은 다음과 같아야 합니다. -

const output = [
   [45, 34, 49],
   [34, 67],
   [78, 65]
];

Map()을 사용하여 필요한 배열을 구성하는 Array.prototype.reduce() 메서드를 사용할 수 있습니다.

따라서 이 함수의 코드를 작성해 보겠습니다 -

예시

이에 대한 코드는 -

const arr = [[1, 45], [1, 34], [1, 49], [2, 34], [4, 78], [2, 67], [4, 65]];
const constructSimilarArray = (arr = []) => {
   const creds = arr.reduce((acc, val) => {
      const { map, res } = acc;
      if(!map.has(val[0])){
         map.set(val[0], res.push([val[1]]) - 1);
      }else{
         res[map.get(val[0])].push(val[1]);
      };
      return { map, res };
   }, {
      map: new Map(),
      res: []
   });
   return creds.res;
};
console.log(constructSimilarArray(arr));

출력

콘솔의 출력은 -

[ [ 45, 34, 49 ], [ 34, 67 ], [ 78, 65 ] ]