尝试过滤和组合JSON项
Trying to filter and combine JSON items
我有一个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"
}]
它们是商店的位置。我有几个这样的清单。如果同一建筑中有两个位置,其中一些会有名称1和名称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);
我可以根据friendlyName的字母顺序排序吗
可以使用sort方法
var sortedArray = json.sort(function(a,b){
return a.friendlyName>b.friendlyName?1:-1
})
JSFIDDLE
相关文章:
- 根据id将json数组组合为一个json数组
- 将组合JSON文件加载到谷歌地图
- 在d3.json中使用d3.csv组合多个csv文件数据输入的最佳方法是什么
- 通过组合变量在解析JSON时访问随机对象
- 将字符串与 JSON 对象组合以返回数据
- JavaScript JSON组合和数据Anylish
- 将json值组合在一起并创建csv
- Javascript将JSON放入数组中,组合并在其他地方使用
- 使用 JSON 组合字符串和数组
- Angularjs - 组合两个 json 对象
- 用 JSON 填充 ExtJS 组合框
- 合并位置并从 JSON 输出组合数据
- 使用 JSON 值填写组合框
- 将两个或多个 JSON 对象数组合并为一个数组,保留唯一性
- 如何将两个 JSON 数组组合在一个 JSON 数组中
- 格式化.js并在 Rails 中组合渲染 json
- 将两个 json/javascript 数组合并为一个数组
- 使用 json 的组合选择
- 如何在 JSON 对象中组合多个键值
- 使用 JSON.stringify 和 encodeURIComponent 的组合