我在网格上有一个点(以下称为原始点),例如[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,是否有一种优雅且相当简洁的方法?
答案 0 :(得分:2)
我不了解JavaScript,但如果您可以使用JavaScript进行表达,则以下算法将非常简单。
让(X0, Y0)
成为原始点。
遍历数组[(X1, Y1), ..., (XN, YN)]
,并记录
R = Xi-X0> 0
和
L = X0 -Xi> 0
当你继续。
在迭代结束时,这些值为您提供最接近的点,即X0 + R
和X0 - L
。
在垂直线上进行类似的迭代。