문제 이해하기
숫자 배열을 입력받아, 원본 배열에서 인접한 두 요소씩 짝지어 더한 값들을 새로운 배열로 반환하는 JavaScript 함수를 작성해야 합니다.
예를 들어 입력 배열이 다음과 같다면 −
const arrayOne = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
출력 결과는 다음과 같아야 합니다 −
const newArrayOne = [1, 5, 9, 13, 17];
즉, 0+1=1, 2+3=5, 4+5=9처럼 두 칸씩 건너뛰며 연속된 요소들의 합을 구하는 것입니다.
해결 방법
이 문제는 반복문에서 인덱스를 2씩 증가시키는 방식으로 간단하게 해결할 수 있습니다. 함수 코드를 작성해 보겠습니다 −
코드 예제
const arrayOne = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
const doubleSum = arr => {
const res = [];
for(let i = 0; i < arr.length; i += 2){
res.push(arr[i] + (arr[i+1] || 0));
};
return res;
};
console.log(doubleSum(arrayOne));
코드 동작 원리
- 인덱스 2칸씩 증가:
i += 2를 사용해 루프가 한 번 실행될 때마다 두 개의 요소를 건너뛰므로, 연속된 요소 쌍을 중복 없이 처리할 수 있습니다. - 안전한 합산 처리:
arr[i+1] || 0표현식은 다음 요소가 존재하지 않을 경우(배열 길이가 홀수일 때 마지막 요소)undefined대신 0을 더해NaN오류를 방지합니다. - 결과 수집: 계산된 합은
push()메서드를 통해 새로운 배열res에 순서대로 저장됩니다.
실행 결과
콘솔에 출력되는 결과는 다음과 같습니다 −
[ 1, 5, 9, 13, 17 ]