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