Javascript 获取阵列中最接近点的最近坐标
我在网格上有一个点(以下称为原点),例如,Javascript 获取阵列中最接近点的最近坐标,javascript,jquery,arrays,Javascript,Jquery,Arrays,我在网格上有一个点(以下称为原点),例如,[3,3] 我还有一组点,它们与原始点位于相同的水平和垂直线上,比如说,[[3,1],[3,2],[3,4],[7,3],[8,3] 我想要一个函数,它将返回最多四个点的数组:每个方向上最接近原始点的点(即左、右、上、下)。在上面的例子中,它将返回 [[3,2],[3,4],[7,3]] 因为[3,2]是左边的最近点,[3,4]是右边的最近点,[7,3]是上面的最近点,下面没有点。(方向的顺序并不重要。) 使用Javascript/JQuery是否有一
[3,3]
我还有一组点,它们与原始点位于相同的水平和垂直线上,比如说,[[3,1],[3,2],[3,4],[7,3],[8,3]
我想要一个函数,它将返回最多四个点的数组:每个方向上最接近原始点的点(即左、右、上、下)。在上面的例子中,它将返回
[[3,2],[3,4],[7,3]]
因为[3,2]
是左边的最近点,[3,4]
是右边的最近点,[7,3]
是上面的最近点,下面没有点。(方向的顺序并不重要。)
使用Javascript/JQuery是否有一种优雅且相当简洁的方法可以做到这一点?我不懂Javascript,但如果你能用Javascript来表达,下面的算法将非常简单 设
(X0,Y0)
为原点
遍历数组,[(X1,Y1),…,(XN,YN)]
,并考虑
R=席-X0>0<P/> 及
L= X0-席> 0
当你继续的时候。 在迭代结束时,这些值给出最近的点,即X0+R
和X0-L
在点的垂直线上进行类似的迭代。上面的最近点不是[3,1]吗?不是的,[3,2]比[3,1]更接近[3,3]。输入是否总是像您的示例中那样排序?@rahulmohan我不想指望它,但实际上会,因为它是由for循环生成的。