숫자로 이루어진 배열을 입력받아, 홀수 인덱스에 위치한 요소들과 짝수 인덱스에 위치한 요소들을 각각 따로 합산한 뒤, 두 합의 절대적인 차이를 반환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.
구현 예제
const arr = [4, 6, 3, 1, 5, 8, 9, 3, 4];
const oddEvenDifference = (arr = []) => {
let oddSum = 0;
let evenSum = 0;
for(let i = 0; i < arr.length; i++){
const el = arr[i];
if(i % 2 === 0){
evenSum += el;
}else{
oddSum += el;
};
};
return Math.abs(oddSum - evenSum);
};
console.log(oddEvenDifference(arr));
코드 동작 원리
위 코드는 다음과 같은 순서로 동작합니다.
먼저 홀수 인덱스 요소의 합을 저장할 oddSum과 짝수 인덱스 요소의 합을 저장할 evenSum 변수를 0으로 초기화합니다. 이후 for 반복문으로 배열 전체를 순회하면서 현재 인덱스 i를 2로 나눈 나머지를 확인합니다.
나머지가 0이면 해당 요소는 짝수 인덱스에 위치하므로 evenSum에 더하고, 그렇지 않으면 홀수 인덱스에 위치하므로 oddSum에 더합니다. 마지막으로 Math.abs() 메서드를 사용해 두 합의 차이에서 부호를 제거한 절댓값을 반환합니다.
출력 결과
예제 배열 [4, 6, 3, 1, 5, 8, 9, 3, 4]의 경우, 짝수 인덱스 요소의 합은 25이고 홀수 인덱스 요소의 합은 18이므로 콘솔에는 다음과 같은 결과가 출력됩니다.
7