我有一個包含位置物件的陣列,并且希望最短點到不同的點,即
//location array
let locations=[
{ x_axis:900, y_axis:900, },
{ x_axis:800, y_axis:800, },
{ x_axis:10, y_axis:40, },
{ x_axis:700, y_axis:700, },
];
let startPoint={ x_axis:0, y_axis:0, }
function closest(locations,startPoint){
//get closest point which is { x_axis:10, y_axis:40 }
}
我嘗試使用的
const index_0 = locations.findIndex(
// Trash code but my aim was to get the closest locations object
// to mainPoint within 100 difference
item => item.x_axis - person[w].x_axis > -100,
item => item.x_axis > person[w].x_axis < 100,
item => item.y_axis - person[w].y_axis > -100,
item => item.y_axis > person[w].y_axis < 100,
);
console.log(locations[index_0])
uj5u.com熱心網友回復:
如果你想得到歐幾里得平面上最近的點,那么就是應用勾股定理,找到給出最小距離的點。
- 遍歷所有
locations - 計算每個條目相
locations對于起點的距離:這可以通過使用畢達哥拉斯定理簡單地計算歐幾里得距離來完成 - 找到最小距離的索引
- 通過給定索引檢索點的條目
要計算兩點之間的對角線,您可以Math.hypot(x1-x2, y1-y2)使用Math.sqrt(Math.pow(x1-x2, 2), Math.pow(y1-y2,2))
請參閱下面的概念驗證:
const locations = [{
x_axis: 900,
y_axis: 900,
},
{
x_axis: 800,
y_axis: 800,
},
{
x_axis: 10,
y_axis: 40,
},
{
x_axis: 700,
y_axis: 700,
},
];
const startPoint = {
x_axis: 0,
y_axis: 0,
}
function closest(locations, startPoint) {
const distances = locations.map(location => {
return Math.hypot(startPoint.x_axis - location.x_axis, startPoint.y_axis - location.x_axis);
});
const minimumDistance = Math.min(...distances);
const indexOfMinimumDistance = distances.indexOf(minimumDistance);
return locations[indexOfMinimumDistance];
}
console.log(closest(locations, startPoint));
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/514899.html
上一篇:在大寫字母之前排序下劃線
