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

JavaScript로 인접 요소 쌍의 합으로 새 배열 만들기

이번 글에서는 숫자 배열을 입력받아, 원본 배열의 요소를 두 개씩 짝지어 더한 값들로 이루어진 새로운 배열을 반환하는 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() 같은 고차 함수를 활용해 다양한 방식으로 응용할 수도 있습니다.