Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何找到与给定数对最近的数对?_Javascript - Fatal编程技术网

Javascript 如何找到与给定数对最近的数对?

Javascript 如何找到与给定数对最近的数对?,javascript,Javascript,我有一组对象,它们有一对数字,我有一对给定的数字 let points = [{x:20,y:30}, {x:34,y:40}, {x:45,y:30}, {x:55,y:30}] let givenNumber= {x:19,y:25} 如何从数组中找到最接近给定对数的最近对 有人可以帮忙吗?你可以得到距离,然后通过取阵列中两点的较短距离来缩小阵列 const distance=(p1,p2)=>Math.sqrt((p1.x-p2.x)**2+(p1.y-p2.y)**2); 设点=[

我有一组对象,它们有一对数字,我有一对给定的数字

let points = [{x:20,y:30}, {x:34,y:40}, {x:45,y:30}, {x:55,y:30}]

let givenNumber= {x:19,y:25}
如何从数组中找到最接近给定对数的最近对


有人可以帮忙吗?

你可以得到距离,然后通过取阵列中两点的较短距离来缩小阵列

const distance=(p1,p2)=>Math.sqrt((p1.x-p2.x)**2+(p1.y-p2.y)**2);
设点=[{x:20,y:30},{x:34,y:40},{x:45,y:30},{x:55,y:30}],
点={x:19,y:25},
结果=点。减少((a,b)=>距离(a,点)<距离(b,点)?a:b);

控制台日志(结果)首先,该代码无效,因此它将是一个错误。当您将其修复为数组时,循环并计算差异。您可以使用自定义排序函数对点数组进行排序(该函数计算它与给定点的距离)。然后取数组的第一个元素,这是一个循环和一些几何/数学。没有什么能阻止你至少第一次尝试。1)你可以跳过sqrt,因为它是单调的。sqrt是一种更昂贵的简单数学运算符。2) 您多次重新计算同一组点的距离。这是一些作业,根本没有显示任何研究工作或任何尝试。甚至不是一个空的循环…@junvar,我知道,但它不再是距离了。如果我有两对像{100,2}和另一对像{2100},并且我给定的数字是{99,4},你知道吗?在这种情况下你想要什么?