우리는 배열의 배열을 가지고 있습니다. 각 하위 배열은 정확히 두 개의 요소를 포함합니다. 첫 번째는 문자열, 이 경우 사람 이름, 두 번째는 정수입니다. 우리가 해야 할 일은 첫 번째 요소와 두 번째 요소가 동일한 모든 하위 배열을 결합하는 것입니다. 공통 부분배열의 두 번째 요소의 합이어야 합니다.
다음은 예제 배열입니다 -
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)입니다. 뿐만 아니라.