在JavaScript中从另一个点获取最近点

在JavaScript中从另一个点获取最近点,javascript,Javascript,假设我有一个观点,叫做I,它是 { x: 10000, y: 10000 } 我还有一些其他点,在一个数组中,类似于: [{ x: 35, y: 10001 }, { x: 2478, y: 38 }, ...] 我的问题是,在JavaScript中,如何从i获取最近的点? 谢谢 您可以使用一些基本几何图形来创建一个函数,获得两个点的绝对距离b/w,然后在数组中循环,找到给出最小距离的对象 设p={ x:10000, y:10000 } 设arr=[{ x:35,

假设我有一个观点,叫做
I
,它是

{
  x: 10000,
  y: 10000
}
我还有一些其他点,在一个数组中,类似于:

[{
  x: 35,
  y: 10001
}, {
  x: 2478,
  y: 38
}, ...]
我的问题是,在JavaScript中,如何从
i
获取最近的点?
谢谢

您可以使用一些基本几何图形来创建一个函数,获得两个点的绝对距离b/w,然后在数组中循环,找到给出最小距离的对象

设p={
x:10000,
y:10000
}
设arr=[{
x:35,
y:10001
}, {
x:2478,
y:38
}]
函数getDiaDist(点){
返回Math.sqrt(Math.pow(point.x,2)+Math.pow(point.y,2))
}
函数getDistance(p1、p2){
返回getDiaDist({x:p1.x-p2.x,y:p1.y-p2.y})
}
函数getNearestPoint(arr,point){
设min=无穷大;
让结果=arr[0]
arr.forEach(a=>{
设dist=getDistance(a,点);
如果(距离>分钟){
最小值=距离
结果=a;
}
})
返回结果;
}

console.log(getNearestPoint(arr,p))
您可以使用一些基本几何图形来创建一个函数,获得两个点之间的绝对距离,然后在数组中循环,找到给出最小距离的对象

设p={
x:10000,
y:10000
}
设arr=[{
x:35,
y:10001
}, {
x:2478,
y:38
}]
函数getDiaDist(点){
返回Math.sqrt(Math.pow(point.x,2)+Math.pow(point.y,2))
}
函数getDistance(p1、p2){
返回getDiaDist({x:p1.x-p2.x,y:p1.y-p2.y})
}
函数getNearestPoint(arr,point){
设min=无穷大;
让结果=arr[0]
arr.forEach(a=>{
设dist=getDistance(a,点);
如果(距离>分钟){
最小值=距离
结果=a;
}
})
返回结果;
}

log(getNearestPoint(arr,p))
您可以通过获取点的最大距离和较小距离的点来减少数组

功能距离(p){
返回Math.sqrt(Math.pow(point.x-p.x,2)+Math.pow(point.y-p.y,2))
}
变量点={x:10000,y:10000},
点=[{x:35,y:10001},{x:2478,y:38}],
最近点=点。减少((a,b)=>距离(a)<距离(b)?a:b);

控制台日志(最近)您可以通过获取点的最大距离和较小距离的点来减少阵列

功能距离(p){
返回Math.sqrt(Math.pow(point.x-p.x,2)+Math.pow(point.y-p.y,2))
}
变量点={x:10000,y:10000},
点=[{x:35,y:10001},{x:2478,y:38}],
最近点=点。减少((a,b)=>距离(a)<距离(b)?a:b);

控制台日志(最近)您可以使用毕达哥拉斯定理计算从点到阵列内每个点的距离

var myPoint={
x:10000,
y:10000
};
变量点=[{
x:35,
y:10001
}, {
x:2478,
y:38
}];
var minDistance=10000000;
var闭点;
对于(var a=0;aconsole.log(“最近的点:x=“+closestPoint.x+”,y=“+closestPoint.y”)您可以使用毕达哥拉斯定理计算从点到阵列内每个点的距离

var myPoint={
x:10000,
y:10000
};
变量点=[{
x:35,
y:10001
}, {
x:2478,
y:38
}];
var minDistance=10000000;
var闭点;
对于(var a=0;aconsole.log(“最近的点:x=“+closestPoint.x+”,y=“+closestPoint.y”)可以使用一些示例和您期望的输出编辑您的问题。同时提供您尝试过的代码。您能展示您尝试过的内容以及它如何不起作用吗?如果您这样做,StackOverflow上的人将更有可能提供帮助。循环如何?可以用一些示例和您期望的输出编辑您的问题。同时提供您尝试过的代码。您能展示您尝试过的内容以及它如何不起作用吗?如果你这样做,StackOverflow上的人会更有可能提供帮助。循环一下怎么样?