Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

จัดเรียงอาร์เรย์ของคะแนนตามระยะทางจากน้อยไปหามากจากจุดที่กำหนด JavaScript


สมมติว่า เรามีอาร์เรย์ของวัตถุโดยแต่ละวัตถุมีคุณสมบัติสองอย่างพอดี นั่นคือ x และ y ที่แสดงพิกัดของจุด เราต้องเขียนฟังก์ชันที่รับอาร์เรย์นี้และวัตถุด้วยพิกัด x และ y ของจุด และเราต้องจัดเรียงจุด (วัตถุ) ในอาร์เรย์ตามระยะทางจากจุดที่กำหนด (ใกล้ที่สุดไปไกลที่สุด)

สูตรระยะทาง

เป็นสูตรทางคณิตศาสตร์ที่ระบุว่าระยะทางที่สั้นที่สุดระหว่างจุดสองจุด (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) เป็นต้น