Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

จัดเรียงอาร์เรย์จุดตามระยะห่างจากจุดที่กำหนดใน JavaScript


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

สูตรระยะห่าง

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