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

배열 요소를 세 개씩 묶어 합계 구하기 - JavaScript


숫자로 이루어진 배열을 입력받아, 원본 배열에서 연속된 세 개의 요소를 각각 묶어 더한 값들을 새로운 배열로 반환하는 JavaScript 함수를 작성해야 합니다.

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

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

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

const output = [3, 12, 21, 9];

위 결과는 배열을 세 요소씩 나누어 각 그룹의 합을 계산한 것입니다. 즉, (0+1+2)=3, (3+4+5)=12, (6+7+8)=21이 되고, 마지막에 남은 요소 9는 그대로 하나의 항목으로 추가됩니다.

예제 코드

다음은 이를 구현한 코드입니다 −

const arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
const thriceSum = arr => {
   if(!arr.length){
      return [];
   }
   const res = [];
   for(let i = 0; i < arr.length; i += 3){
      res.push(arr[i] + (arr[i+1] || 0) + (arr[i+2] || 0));
   };
   return res;
};
console.log(thriceSum(arr));

코드 동작 방식

  • 빈 배열 처리: 함수 실행 시 먼저 배열의 길이를 확인하여, 배열이 비어 있으면 빈 배열([])을 즉시 반환합니다.
  • 세 요소씩 그룹화: for 루프의 증감식에서 인덱스 i를 3씩 증가시켜, 배열을 겹치지 않는 세 요소 단위의 그룹으로 순회합니다.
  • 남은 요소 안전하게 처리: 마지막 그룹의 요소 개수가 3개보다 적을 수 있으므로, (arr[i+1] || 0), (arr[i+2] || 0)처럼 논리 OR 연산자를 활용해 존재하지 않는(undefined) 값을 0으로 대체합니다. 덕분에 오류 없이 부분 그룹도 정상적으로 합산됩니다.

출력 결과

위 코드를 실행하면 콘솔에 다음과 같은 출력이 표시됩니다 −

[ 3, 12, 21, 9 ]