Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 2차원 배열 다루기: 각 하위 배열의 합계를 담은 새 배열 반환하기

문제 개요

숫자들로 이루어진 여러 개의 하위 배열을 포함하는 배열(2차원 배열)이 주어졌을 때, 새로운 배열의 각 요소가 해당 하위 배열에 있는 모든 숫자의 합계가 되도록 하는 함수를 작성해야 합니다.

예를 들어, 입력 배열이 다음과 같다면 −

const numbers = [
    [1, 2, 3, 4],
    [5, 6, 7],
    [8, 9, 10, 11, 12]
];

함수의 출력 결과는 다음과 같아야 합니다 −

const output = [10, 18, 50];

즉, 첫 번째 하위 배열의 합은 1+2+3+4 = 10, 두 번째는 5+6+7 = 18, 세 번째는 8+9+10+11+12 = 50이 됩니다.

해결 방법

이 문제는 자바스크립트의 reduce() 메서드를 활용하면 깔끔하게 해결할 수 있습니다. 먼저 하나의 배열 안에 있는 모든 숫자의 합을 구하는 헬퍼 함수를 정의하고, 바깥쪽 reduce()를 사용해 각 하위 배열의 합계를 결과 배열에 순서대로 추가합니다.

예제 코드

const numbers = [
    [1, 2, 3, 4],
    [5, 6, 7],
    [8, 9, 10, 11, 12]
];
const sum = arr => arr.reduce((acc, val) => acc + val);
const sumSubArray = arr => {
    return arr.reduce((acc, val) => {
        const s = sum(val);
        acc.push(s);
        return acc;
    }, []);
};
console.log(sumSubArray(numbers));

코드 설명

sum 함수는 전달받은 배열의 모든 요소를 reduce()로 누적하여 합계를 반환합니다. sumSubArray 함수는 초기값으로 빈 배열 []을 설정한 뒤, 각 하위 배열을 순회하면서 그 합계를 계산하고 결과 배열에 push합니다. 최종적으로 하위 배열의 합계들만 모인 새로운 배열이 반환됩니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다 −

[ 10, 18, 50 ]