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

JavaScript로 홀수 인덱스 요소에 인덱스 값을 곱하는 방법

이번 글에서는 숫자 배열을 유일한 인자로 받아, 짝수 인덱스에 위치한 숫자는 그대로 반환하고, 홀수 인덱스에 위치한 숫자는 해당 인덱스 값과 곱하여 반환하는 함수를 작성해 보겠습니다.

문제 이해하기

예를 들어 다음과 같은 배열이 입력으로 주어진다고 가정해 봅시다.

[5, 10, 15, 20, 25, 30, 50, 100]

이때 함수는 아래와 같은 결과를 반환해야 합니다.

[5, 10, 15, 60, 25, 150, 50, 700]

결과를 살펴보면, 인덱스 1의 값 10은 그대로 유지되고(0을 곱한 것과 동일), 인덱스 3의 값 20은 3과 곱해져 60이 되었으며, 인덱스 5의 값 30은 5와 곱해져 150, 인덱스 7의 값 100은 7과 곱해져 700이 된 것을 확인할 수 있습니다.

reduce() 메서드로 해결하기

이 문제는 JavaScript의 Array.prototype.reduce() 메서드를 활용하면 간결하게 해결할 수 있습니다. reduce()는 배열을 순회하면서 누적값(acc)에 새로운 결과를 쌓아 최종 배열을 만들어 주기 때문에, 각 요소의 인덱스를 확인하며 조건에 맞게 변환하기에 적합합니다.

예제 코드

const arr = [5, 10, 15, 20, 25, 30, 50, 100];

const multiplyOdd = (arr) => {
  return arr.reduce((acc, val, ind) => {
    // 홀수 인덱스인 경우 현재 값에 인덱스를 곱함
    if (ind % 2 === 1) {
      val *= ind;
    }
    return acc.concat(val);
  }, []);
};

console.log(multiplyOdd(arr));

코드 설명

  • reduce의 세 번째 매개변수 ind: reduce 콜백 함수는 누적값(acc), 현재 값(val), 그리고 현재 인덱스(ind)를 받을 수 있습니다.
  • 홀수 인덱스 판별: ind % 2 === 1 조건으로 홀수 인덱스를 걸러냅니다.
  • 배열 재구성: 조건에 따라 변환된 값을 concat()으로 누적 배열에 추가하여 새로운 배열을 완성합니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

[
   5, 10, 15, 60,
  25, 150, 50, 700
]

마무리

이처럼 reduce() 메서드를 사용하면 반복문 없이도 인덱스 기반의 조건 처리를 깔끔하게 구현할 수 있습니다. 참고로 성능이 중요한 대용량 배열에서는 map() 메서드를 사용하는 방법도 고려해 볼 수 있습니다.