gpt4 book ai didi

Javascript 查找字符串附近的数字

转载 作者:行者123 更新时间:2023-12-03 02:32:33 25 4
gpt4 key购买 nike

好的,我有一个这样的列表:

https://haxified.is-a-me.me/0a94f61d.png

我想找到三个最接近的,例如如果我跑 1539, 4502它会找到最接近的三个值,最接近是指字符串的第一个和第二个值最相似(用逗号分隔)

我尝试过做一个 for 循环,并计算出它们之间的距离,但没有成功。

最佳答案

您的数据格式不正确。您需要一个数字数组的数组,而不是字符串数组。因此第一个任务是进行转换。

然后您可以使用距离公式来计算到给定坐标的距离,并将其存储为列表中每个点的额外信息。

然后按附加距离排序。排序并不是最有效的方法,因为您可以先检索最小距离,然后在删除第一个找到的最小值后检索最小值,最后在删除找到的第一个最小值后再次检索最小值。但如果您对此类优化感兴趣,请亲自尝试一下。

排序后,从结果数组中切出前三个元素并返回。您可能希望将这三个项目转换回原始格式,即三个字符串的数组。

这是一个片段:

function closestThree(data, px, py) {
return data
.map( s => s.split(',').map(Number) ) // Convert to pairs of numbers
.map( ([x,y]) => [x,y,(x-px)*(x-px)+(y-py)*(y-py)] ) // Add squared distance
.sort( (a, b) => a[2] - b[2] ) // Sort by distance
.slice(0, 3) // Get three first results
.map( ([x, y]) => x + ',' + y ); // Convert back to strings
}

// Sample
const points = ['123,5432', '432,325', '735,1045', '583,564'];
const res = closestThree(points, 405, 630);
console.log(res);

关于Javascript 查找字符串附近的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48673512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com