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

JavaScript로 배열의 짝수 인덱스 요소 합계 구하기

문제 소개

이번 글에서는 정수로 이루어진 배열을 입력받아 다음 조건을 만족하는 값을 반환하는 JavaScript 함수를 작성해 보겠습니다.

조건: 짝수 인덱스(0, 2, 4...)에 위치한 모든 정수의 합을 구한 뒤, 마지막 인덱스에 있는 정수를 곱한 결과를 반환합니다.

먼저 예시 배열을 살펴보겠습니다.

const arr = [4, 1, 6, 8, 3, 9];

위 배열에서 짝수 인덱스(0, 2, 4)에 해당하는 요소는 4, 6, 3이며, 이들의 합은 13입니다. 마지막 요소는 9이므로, 최종 결과는 13 × 9 = 117이 됩니다.

const output = 117;

해결 코드

다음은 위 문제를 해결하는 전체 코드입니다.

const arr = [4, 1, 6, 8, 3, 9];
const evenLast = (arr = []) => {
   if (arr.length === 0) {
      return 0
   } else {
      const sub = arr.filter((_, index) => index%2===0)
      const sum = sub.reduce((a,b) => a+b)
      const posEl = arr[arr.length -1]
      const res = sum*posEl
      return res
   }
}
console.log(evenLast(arr));

코드 동작 원리

코드가 단계별로 어떻게 작동하는지 살펴보겠습니다.

  • 빈 배열 처리: 배열의 길이가 0이면 곱하거나 더할 요소가 없으므로 즉시 0을 반환합니다.
  • 짝수 인덱스 필터링: filter() 메서드와 함께 index % 2 === 0 조건을 사용하여 짝수 인덱스에 위치한 요소만 추출합니다. 이때 첫 번째 매개변수는 사용하지 않으므로 언더스코어(_)로 표기했습니다.
  • 합계 계산: reduce() 메서드를 활용해 필터링된 요소들을 모두 더합니다.
  • 마지막 요소 곱하기: arr[arr.length - 1]로 마지막 요소를 가져온 후, 앞서 구한 합계에 곱하여 최종 결과를 반환합니다.

실행 결과

코드를 실행하면 콘솔에 다음과 같은 출력이 나타납니다.

117

이처럼 filter()reduce() 같은 배열 내장 메서드를 활용하면 복잡한 반복 로직 없이도 간결하고 가독성 높은 코드로 문제를 해결할 수 있습니다.