다음과 같은 숫자 배열이 있다고 가정합니다. -
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 ] ]