이번 글에서는 숫자 배열을 입력받아, 원본 배열의 요소를 두 개씩 짝지어 더한 값들로 이루어진 새로운 배열을 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.
문제 이해하기
예를 들어, 입력 배열이 다음과 같다고 가정해 보겠습니다.
const arr1 = [1, 1, 2, 7, 4, 5, 6, 7, 8, 9];이 경우 기대되는 출력 결과는 다음과 같습니다.
const output = [2, 9, 9, 13, 17];결과 배열의 각 요소는 원본 배열에서 인접한 두 요소를 한 쌍으로 묶어 더한 값입니다.
- 1 + 1 = 2
- 2 + 7 = 9
- 4 + 5 = 9
- 6 + 7 = 13
- 8 + 9 = 17
구현 코드
이 문제는 for 반복문에서 인덱스를 2씩 증가시키며 각 쌍의 합을 결과 배열에 추가하는 방식으로 간단히 해결할 수 있습니다.
const arr1 = [1, 1, 2, 7, 4, 5, 6, 7, 8, 9];
const consecutiveSum = arr => {
const res = [];
for(let i = 0; i < arr.length; i += 2){
res.push(arr[i] + (arr[i+1] || 0));
};
return res;
};
console.log(consecutiveSum(arr1));코드 설명
- 반복문의 인덱스 변수
i를 0부터 시작해 2씩 증가시켜, 배열을 두 요소 단위로 순회합니다. arr[i] + (arr[i+1] || 0)표현식은 현재 요소와 바로 다음 요소를 더합니다. 배열 길이가 홀수여서 마지막에 짝이 없는 요소가 남더라도undefined || 0이 평가되어 0을 더하게 되므로 오류 없이 안전하게 처리됩니다.- 각 쌍의 합은
push()메서드를 통해 결과 배열res에 차례대로 저장됩니다.
실행 결과
위 코드를 실행하면 콘솔에 다음과 같은 출력이 나타납니다.
[ 2, 9, 9, 13, 17 ]이처럼 간단한 반복문 하나만으로도 배열의 인접 요소들을 효율적으로 그룹화하고 합산할 수 있습니다. 필요에 따라 일반 함수 선언으로 바꾸거나, reduce() 같은 고차 함수를 활용해 다양한 방식으로 응용할 수도 있습니다.