gpt4 book ai didi

jquery - 在 jQuery 中将新数据合并到现有数组中

转载 作者:行者123 更新时间:2023-12-01 08:12:06 25 4
gpt4 key购买 nike

我有一个根据数据库中存储的一些数据创建的数组:

var chdata = [
{title: "title one",link: "link one",thumb: "image url one",pcaid: "0001"},
{title: "title two",link: "link two",thumb: "image url two",pcaid: "0002"},
{title: "title three",link: "link three",thumb: "image url three",pcaid: "0003"},
{title: "title four",link: "link four",thumb: "image url four",pcaid: "0004"}
];

然后我从地理编码服务中提取一些位置数据,这些数据以以下格式到达:

var pcdata = [
{Distance: "12.2",Latitude: "50.1",Longitude: "0.1",YourID:"0003"},
{Distance: "80.7",Latitude: "50.4",Longitude: "0.5",YourID:"0001"},
{Distance: "95.3",Latitude: "50.9",Longitude: "0.7",YourID:"0004"},
{Distance: "135.1",Latitude: "51.3",Longitude: "0.9",YourID:"0002"},
]

如果您不介意 DBA 的类比,那么 chdata 中的“pcaid”和 pcdata 中的“YourID”是关联两个数组的外键。

我需要通过 chdata 数组“each()”,显示其中的数据以及 pcdata 中相关项目的距离。例如在伪代码中:

<a href="link one">
<img src="image url one" /><br />title one (80.7 miles away)
</a>

此数据需要按距离顺序排列。我的问题是:

  1. 我如何关联/交叉 chdatapcdata基于 pcaid 之间的匹配和YourID .
  2. 完成此操作后,我计划使用 array.sort 将其按距离顺序排列。您预见到这会出现任何问题吗?

最佳答案

对于#1:这里最好的设置是将您的pcdata采用键值数据格式。我将其称为 pchash。然后你可以使用这个(相对)简单的语法:

for(var i = 0; i < chdata.length; ++i)
{
var ch = chdata[i];
var dist = pchash[ch.pcaid].distance;
// Other stuff...
}

要将当前的 pcdata 转换为 pchash,您可以使用如下内容:

pchash = {};
for(var i = 0; i < pcdata.length; ++i)
{
pchash[pcdata[i]['YourID']] = pcdata[i];
}

或者,更好的是,如果您控制服务器,则首先以该格式发送 pcdata

对于 #2: JavaScript 数组有一个内置的 sort函数,并且可以传入比较器进行自定义排序。对于您的情况,请尝试:

whatever.sort(function(a, b) {
return a.Distance - b.Distance;
});

如果结果与您想要的相反,只需从 b.Distance 中减去 a.Distance 即可。

希望有帮助!

PS:另一个答案建议使用嵌套循环进行暴力破解。如果您有大量数据,我不会推荐它:它将需要 chdata.length * pcdata.length 迭代,而这只需要 chdata.length + pcdata。 length 迭代(或者只是 chdata.length,如果您从服务器获取键值格式)。但在小数据集上,差异不会很明显。

关于jquery - 在 jQuery 中将新数据合并到现有数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12912108/

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