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

JavaScript 배열에서 인접 요소 간의 거리(차이)를 구하는 방법

숫자로 이루어진 배열을 입력받아, 원본 배열에서 인접한 두 요소의 차이를 새로운 배열로 반환하는 함수를 작성해야 합니다. 함수 이름은 예를 들어 arrayDistance()라고 정하겠습니다.

예를 들어, 입력 배열이 다음과 같다면 −

const arr = [1000,2000,5000,4000,300,0,1250];

출력 결과는 아래와 같이 각 인접 요소 쌍의 차이가 됩니다 −

[(1000-2000),(2000-5000),(5000-4000),(4000-300),(300-0),(0-1250)]

구현 방법

이 문제는 JavaScript의 reduce() 메서드를 활용하면 깔끔하게 해결할 수 있습니다. 배열을 순회하면서 현재 요소와 다음 요소의 차이를 계산하고, 그 절댓값을 결과 배열에 하나씩 추가하는 방식입니다.

코드 예제

const arr = [1000,2000,5000,4000,300,0,1250];

const arrayDistance = arr => {
    return arr.reduce((acc, val, ind) => {
        if(arr[ind+1] !== undefined){
            return acc.concat(Math.abs(val - arr[ind+1]));
        } else {
            return acc;
        }
    }, []);
};

console.log(arrayDistance(arr));

코드 설명

  • reduce() 메서드는 빈 배열 []을 초기값으로 사용하여 순차적으로 누적합니다.
  • 현재 인덱스 ind의 다음 요소 arr[ind+1]이 존재하는지 확인하여, 마지막 요소에서 범위를 벗어나는 오류를 방지합니다.
  • Math.abs()를 사용해 두 요소 차이의 절댓값을 계산한 뒤, concat()으로 결과 배열에 추가합니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다 −

[ 1000, 3000, 1000, 3700, 300, 1250 ]

입력 배열의 길이가 7이므로, 인접 요소 쌍은 총 6개가 되어 출력 배열의 길이 역시 6인 것을 확인할 수 있습니다. 이처럼 reduce()와 조건문만으로도 배열 내 인접 요소 간의 거리를 손쉽게 계산할 수 있습니다.