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

JavaScript에서 배열 내 목표 값과 가장 가까운 요소의 인덱스 찾는 방법

이번 글에서는 숫자 배열을 첫 번째 인수로, 하나의 숫자를 두 번째 인수로 받는 JavaScript 함수를 작성해 보겠습니다.

이 함수의 역할은 배열에 포함된 숫자들 중에서 두 번째 인수로 전달된 값(목표 값)과 가장 가까운 숫자를 찾아, 해당 숫자의 인덱스를 반환하는 것입니다.

동작 원리

가장 가까운 값을 찾는 핵심 아이디어는 다음과 같습니다.

  • 배열을 처음부터 끝까지 순회하면서 각 요소와 목표 값 사이의 절댓값 차이를 계산합니다.
  • 현재까지 발견한 최소 차이보다 더 작은 차이를 가진 요소가 나타나면, 그 요소의 인덱스를 저장합니다.
  • 순회가 끝나면 저장된 인덱스가 곧 목표 값과 가장 가까운 요소의 위치입니다.

예제 코드

const arr = [0, 65, 131, 196, 259, 323, 388, 453, 517];
const target = 425;

const findClosest = (arr, target) => {
    let min;
    let chosen = 0;
    for (let i in arr) {
        min = Math.abs(arr[chosen] - target);
        if (Math.abs(arr[i] - target) < min) {
            chosen = i;
        }
    }
    return chosen;
};

console.log(findClosest(arr, target));

코드 설명

위 코드에서 Math.abs() 메서드는 두 값의 차이를 항상 양수로 만들어 주므로, 목표 값보다 크거나 작은 경우 모두 동일한 기준으로 비교할 수 있습니다. 변수 chosen은 현재까지 가장 가까운 요소의 인덱스를 추적하며, 반복문 안에서 더 가까운 요소를 발견할 때마다 갱신됩니다.

출력 결과

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

7

목표 값 425와 가장 가까운 배열의 요소는 인덱스 7에 있는 453입니다. 실제로 |425 - 453| = 28로, 나머지 어떤 요소보다도 차이가 작기 때문에 함수는 7을 반환하게 됩니다.