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

JavaScript로 원본 배열의 연속된 두 요소를 더해 새로운 배열 만들기

문제 이해하기

숫자 배열을 입력받아, 원본 배열에서 인접한 두 요소씩 짝지어 더한 값들을 새로운 배열로 반환하는 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 ]