각 객체가 정확히 두 개의 속성, 즉 점의 좌표를 나타내는 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)이 오고, 이런 식으로 올바른 순서입니다.