Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

주어진 포인트에서 오름차순 거리로 포인트 배열 정렬 JavaScript

<시간/>

각 객체가 정확히 두 개의 속성, 즉 점의 좌표를 나타내는 x와 y를 갖는 객체 배열이 있다고 가정해 보겠습니다. 우리는 이 배열과 점의 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);

출력

콘솔의 출력은 -

[
   { 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)이 오고, 이런 식으로 올바른 순서입니다.