Javascript 如何找到离原点最近的坐标?

Javascript 如何找到离原点最近的坐标?,javascript,arrays,google-maps,coordinates,coordinate-systems,Javascript,Arrays,Google Maps,Coordinates,Coordinate Systems,我知道关于按多个值对javascript数组排序有很多问题,但没有一个答案解决了我的问题 我有一个坐标数组,如: x | y -------- 10 20 12 18 20 30 5 40 100 2 如何获得最接近原点的坐标?对于每个x,y对,正方形x,正方形y并相加。最小的数字离原点最近。使用 Math.sqrt( Math.pow(x, 2) + Math.pow(y, 2) ); 以最低的结果为例 var点=[ {x:10,y:20}, {x:12

我知道关于按多个值对javascript数组排序有很多问题,但没有一个答案解决了我的问题

我有一个坐标数组,如:

x  |  y
--------
10    20
12    18
20    30
5     40
100   2

如何获得最接近原点的坐标?

对于每个
x,y
对,正方形x,正方形y并相加。最小的数字离原点最近。

使用

Math.sqrt( Math.pow(x, 2) + Math.pow(y, 2) );
以最低的结果为例


var点=[
{x:10,y:20},
{x:12,y:18},
{x:20,y:30},
{x:5,y:40},
{x:100,y:2}
];
功能d(点){
返回Math.pow(点x,2)+Math.pow(点y,2);
}
var最近=点。切片(1)。减少(函数(最小,p){
如果(d(p)

您会注意到我们跳过了这里的
Math.sqrt
步骤。正如马克·塞切尔所指出的,计算平方根是一种“最小公分母”运算;我们仍然可以通过获得最小的
x^2+y^2
值来确定最近点。

不需要平方根。如果a^2>b^2,则表示a>b.True,感谢您的反馈。我将更新我的答案。@naomik这是曼哈顿距离,它用于某些应用程序-我不知道它是否适用于这里。想想看,曼哈顿距离不适用于这里,因为它将使点2,0与原点的距离(2)与1,1相同,这显然更接近平方根(2)。如果d(p)var points = [ {x: 10, y: 20}, {x: 12, y: 18}, {x: 20, y: 30}, {x: 5, y: 40}, {x: 100, y: 2} ]; function d(point) { return Math.pow(point.x, 2) + Math.pow(point.y, 2); } var closest = points.slice(1).reduce(function(min, p) { if (d(p) < min.d) min.point = p; return min; }, {point: points[0], d:d(points[0])}).point; closest; // {x: 12, y:18}