Computer >> Máy Tính >  >> Lập trình >> Javascript

Sắp xếp mảng điểm theo khoảng cách tăng dần từ một điểm đã cho JavaScript

Giả sử, chúng ta có một mảng đối tượng với mỗi đối tượng có chính xác hai thuộc tính, x và y, đại diện cho tọa độ của một điểm. Chúng ta phải viết một hàm nhận trong mảng này và đối tượng có tọa độ x và y của một điểm và chúng ta phải sắp xếp các điểm (đối tượng) trong mảng theo khoảng cách từ điểm đã cho (gần nhất đến xa nhất).

Công thức Khoảng cách

Nó là một công thức toán học nói rằng khoảng cách ngắn nhất giữa hai điểm (x1, y1) và (x2, y2) trong một mặt phẳng hai chiều được cho bởi -

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

Chúng tôi sẽ sử dụng công thức này để tính toán khoảng cách của mỗi điểm từ điểm đã cho và sắp xếp chúng theo đó.

Ví dụ

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);

Đầu ra

Đầu ra trong bảng điều khiển sẽ là -

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

Và trên thực tế, đây là thứ tự chính xác vì (6, 2) gần nhất với (5,4), sau đó đến (2, 6) rồi đến (7, 10), v.v.