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

JavaScript에서 배열 내 가장 가까운 값 찾는 방법

JavaScript에서 숫자 배열과 목표 숫자를 인자로 받아, 배열 안에 있는 값 중 두 번째 인자로 전달된 숫자와 가장 가까운 값을 반환하는 함수를 작성해야 하는 경우가 종종 있습니다.

이 문제는 reduce() 메서드를 활용하면 간결하게 해결할 수 있습니다. 배열을 순회하면서 각 요소와 목표 숫자 사이의 절대적인 차이를 계산하고, 그 차이가 기존에 기록된 최소 차이보다 작으면 해당 값과 인덱스를 갱신하는 방식입니다.

예제 코드

아래 코드를 살펴보겠습니다.

const arr = [3, 56, 56, 23, 7, 76, -2, 345, 45, 76, 3];
const num = 37;

const findClosest = (arr, num) => {
  const creds = arr.reduce((acc, val, ind) => {
    let { diff, index } = acc;
    const difference = Math.abs(val - num);
    if (difference < diff) {
      diff = difference;
      index = ind;
    }
    return { diff, index };
  }, {
    diff: Infinity,
    index: -1
  });
  return arr[creds.index];
};

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

코드 설명

  • 초기 누적값으로 diff: Infinityindex: -1을 설정하여 어떤 차이든 항상 더 작도록 만듭니다.
  • Math.abs(val - num)으로 각 요소와 목표 숫자 사이의 거리(절댓값)를 구합니다.
  • 현재 거리가 저장된 최소 거리보다 작으면 diffindex를 새로운 값으로 갱신합니다.
  • 순회가 끝나면 최종적으로 기록된 인덱스에 해당하는 배열 요소를 반환합니다.

출력 결과

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

45

목표 숫자가 37일 때 배열에서 가장 가까운 값은 45이며, 이는 37과의 차이가 8로 다른 어떤 요소보다 작기 때문입니다.