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

JavaScript로 주어진 좌표점으로부터 오름차순 거리 순서대로 포인트 배열 정렬하기

각 객체가 점의 좌표를 나타내는 xy라는 두 개의 속성을 가진 객체 배열이 있다고 가정해 봅시다. 우리는 이 배열과 특정 점의 x, y 좌표를 담은 객체를 인자로 받아, 배열 안의 점들을 주어진 점으로부터의 거리(가까운 순에서 먼 순으로)에 따라 정렬하는 함수를 작성해야 합니다.

거리 공식

거리 공식은 2차원 평면 위의 두 점 (x1, y1)과 (x2, y2) 사이의 최단 거리를 구하는 수학적 공식입니다.

$S=\sqrt{((x2-x1)^2+(y2-y1)^2)}$

우리는 이 공식을 활용하여 각 점이 주어진 점으로부터 얼마나 떨어져 있는지 계산하고, 그 결과를 기준으로 배열을 정렬할 것입니다.

예제 코드

const coordinates =
[{x:2,y:6},{x:14,y:10},{x:7,y:10},{x:11,y:6},{x:6,y:2}];
const distance = (coor1, coor2) => {
    const x = coor2.x - coor1.x;
    const y = coor2.y - coor1.y;
    return Math.sqrt((x*x) + (y*y));
};
const sortByDistance = (coordinates, point) => {
    const sorter = (a, b) => distance(a, point) - distance(b, point);
    coordinates.sort(sorter);
};
sortByDistance(coordinates, {x: 5, y: 4});
console.log(coordinates);

코드 설명

distance 함수는 유클리드 거리 공식을 사용하여 두 좌표점 사이의 직선 거리를 계산합니다. sortByDistance 함수는 JavaScript 배열의 내장 메서드인 sort()에 비교 함수를 전달하여, 각 점을 기준 점까지의 거리 차이를 기준으로 오름차순 정렬합니다.

출력 결과

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

[
    { x: 6, y: 2 },
    { x: 2, y: 6 },
    { x: 7, y: 10 },
    { x: 11, y: 6 },
    { x: 14, y: 10 }
]

결과를 확인해 보면 실제로 올바른 순서로 정렬된 것을 알 수 있습니다. 즉, (6, 2)가 기준점 (5, 4)에 가장 가깝고, 그다음으로 (2, 6), (7, 10) 순서로 멀어집니다.