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

값을 합산하는 동안 배열 배열의 고유 항목 결합 - JavaScript

<시간/>

우리는 배열의 배열을 가지고 있습니다. 각 하위 배열은 정확히 두 개의 요소를 포함합니다. 첫 번째는 문자열, 이 경우 사람 이름, 두 번째는 정수입니다. 우리가 해야 할 일은 첫 번째 요소와 두 번째 요소가 동일한 모든 하위 배열을 결합하는 것입니다. 공통 부분배열의 두 번째 요소의 합이어야 합니다.

다음은 예제 배열입니다 -

const example = [[
   'first',
   12
], [
   'second',
   19
], [
   'first',
   7
]];

다음과 같이 변환해야 합니다.

const example = [[
   'first',
   19
   ], [
      'second',
      19
   ]
];

배열을 입력으로 사용하고 결합된 배열을 출력으로 반환하는 함수 CombineArray()를 작성한다고 가정해 보겠습니다. 동일한 코드는 -

예시

const people = [
   ['Ram', 21],
   ['Mohan', 33],
   ['Vikram', 25],
   ['Mike', 29],
   ['Mohan', 41],
   ['Vikram', 26]
];
const combineArray = (people) => {
   const map = {};
   for(const index in people){
      const name = people[index][0];
      const prop = people[index][1];
      if(map[name]){
         map[name] += prop;
      }else{
         map[name] = prop;
      }
   }
   return Object.keys(map).map(key => [key, map[key]]);
}
console.log(combineArray(people));

출력

콘솔의 출력은 -

[ [ 'Ram', 21 ], [ 'Mohan', 74 ], [ 'Vikram', 51 ], [ 'Mike', 29 ] ]

CombineArray 함수 이해하기 -

배열을 반복하고 이름을 키로 매핑하고 prop을 개체의 값으로 매핑하여 중복 키가 함께 추가되고 마지막으로 개체가 배열의 배열로 변환되어 반환됩니다.

이 함수의 시간 복잡도는 O(2n)입니다. 종종 O(n)으로 반올림됩니다. 공간 복잡도는 O(n)입니다. 뿐만 아니라.