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

JavaScript로 배열의 인접한 두 요소 간 절대 차이 구하는 방법

숫자 리터럴로 이루어진 배열이 주어졌을 때, 배열에서 서로 인접한 두 요소의 절대 차이(absolute difference)를 계산하여 새로운 배열로 반환하는 함수를 작성해야 하는 경우가 있습니다.

예를 들어 다음과 같습니다.

입력 배열: [23, 53, 66, 11, 67]
출력 결과: [30, 13, 55, 56]

즉, 첫 번째와 두 번째 요소의 차이(|53 - 23| = 30), 두 번째와 세 번째 요소의 차이(|66 - 53| = 13)처럼 각 인접 쌍의 차이를 순서대로 담은 배열이 결과가 됩니다.

구현 방법

이 문제는 반복문 하나면 충분히 해결할 수 있습니다. 핵심 아이디어는 다음과 같습니다.

  • 인덱스 1부터 배열의 끝까지 순회합니다.
  • 현재 요소 arr[i]와 바로 앞 요소 arr[i - 1]의 차이에 Math.abs()를 적용해 절댓값을 구합니다.
  • 그 값을 새로운 배열(differenceArray)에 순서대로 저장(push)합니다.

예제 코드

var arr = [23, 53, 66, 11, 67];

const createDifference = (arr) => {
  const differenceArray = [];
  for (let i = 1; i < arr.length; i++) {
    differenceArray.push(Math.abs(arr[i] - arr[i - 1]));
  }
  return differenceArray;
};

console.log(createDifference(arr));

실행 결과

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

[ 30, 13, 55, 56 ]

추가 팁

ES6의 map()slice()를 활용하면 같은 로직을 더 간결하게 표현할 수도 있습니다.

const createDifference = (arr) =>
  arr.slice(1).map((num, i) => Math.abs(num - arr[i]));

이 방식은 원본 배열의 두 번째 요소부터 끝까지 순회하면서, 각 요소를 그 앞의 요소와 비교하기 때문에 동일한 결과를 얻을 수 있습니다. 상황에 따라 가독성이 더 좋은 방법을 선택하시면 됩니다.