Computer >> Hướng Dẫn 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ừ điểm cho trước JavaScript

Cho mảng object mỗi object có x, y là tọa độ điểm. Viết hàm nhận mảng này và object điểm tham chiếu, sắp xếp các điểm theo khoảng cách từ điểm tham chiếu (gần đến xa).

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

Khoảng cách giữa (x1,y1) và (x2,y2): S = sqrt((x2-x1)^2 + (y2-y1)^2)

Dùng công thức này tính khoảng cách và sắp xếp.

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

Kết quả

Đầu ra trong console sẽ là:

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

Thứ tự đúng vì (6,2) gần (5,4) nhất, rồi (2,6), (7,10)...