gpt4 book ai didi

javascript - 尝试过滤和组合 JSON 项

转载 作者:行者123 更新时间:2023-11-29 19:12:03 25 4
gpt4 key购买 nike

我有一个包含多个对象的 JSON,格式如下:

[{
"id":14,
"friendlyName":"NameOfPlace 1",
"lat":30.402735,
"lon":-90,
"address":"1 place street",
"city":"NYC",
"state":"NY",
"zipCode":"12346",
"locationCode":"MQ00003",
"details":"in the bank"
},
{
"id":15,
"friendlyName":"NameOfPlace 2",
"lat":30.402735,
"lon":-90,
"address":"1 place street",
"city":"NYC",
"state":"NY",
"zipCode":"12346",
"locationCode":"MQ00003",
"details":"near ATM"
}]

它们是商店的位置。我在列表中列出了其中的几个。如果同一建筑物内有 2 个位置,则其中一些名称具有 Name 1 和 Name 2 之类的名称。我试图找到一种方法将它们组合成一个具有两个值但只有一个位置的对象(在示例的情况下为“名称”)。我有两个问题,如果我有像上面这样的对象列表,我可以根据 friendlyName 的字母顺序排序,然后检查是否有类似的命名位置可以组合成一个对象。请注意,这些位置将具有相同的经纬度和地址,只是不同的详细信息和 ID。我只能弄清楚如何线性地做它,而且对于我正在尝试做的移动应用程序来说它非常慢。

最佳答案

您可以使用哈希表对友好名称进行分组,并使用数据生成一个新数组。如果数据不同,则所有值都包含在一个数组中。

var data = [{ "id": 14, "friendlyName": "NameOfPlace 1", "lat": 30.402735, "lon": -90, "address": "1 place street", "city": "NYC", "state": "NY", "zipCode": "12346", "locationCode": "MQ00003", "details": "in the bank" }, { "id": 15, "friendlyName": "NameOfPlace 2", "lat": 30.402735, "lon": -90, "address": "1 place street", "city": "NYC", "state": "NY", "zipCode": "12346", "locationCode": "MQ00003", "details": "near ATM" }],
grouped = [];

data.forEach(function (o) {
var key = o.friendlyName.split(/(?= \d*$)/)[0];
if (!this[key]) {
this[key] = { Name: key };
grouped.push(this[key]);
}
Object.keys(o).forEach(function (k) {
if (!(k in this[key])) {
this[key][k] = o[k];
return;
}
if (this[key][k] === o[k]) {
return true;
}
if (Array.isArray(this[key][k])) {
this[key][k].push(o[k]);
return;
}
this[key][k] = [this[key][k], o[k]];
}, this);
}, Object.create(null));

console.log(grouped);

关于javascript - 尝试过滤和组合 JSON 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38081173/

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