使用javascript将一个对象数组组合为一个
combinig an object array into one using javascript
Hi我有一个对象数组,我必须使用它来创建一个公共对象下面是我的阵列
[
{
"id": "mapbox-places.16822",
"bounds": [
-77.89820379123734,
41.0650562721515,
-77.51623302327094,
41.2527616498374
],
"lon": -77.704974,
"lat": 41.158976,
"name": "Beech Creek",
"type": "city"
},
{
"id": "province.2184819983",
"bounds": [
-80.519851,
39.719798999999995,
-74.68950199999999,
42.51607199999999
],
"lon": -77.725902,
"lat": 41.132832,
"name": "Pennsylvania",
"type": "province"
},
{
"id": "country.4150104525",
"bounds": [
-179.23108600000003,
18.865459999999985,
179.85968099999997,
71.441059
],
"lon": -99.041505,
"lat": 37.940711,
"name": "United States",
"type": "country"
}
]
下面是我尝试的代码,其中结果包含上面的数组
var finalResult = {};
var resultarray=[];
for (var j = 0; j < result.length; j++) {
var latitude = null,
longitude = null,
name = null,
type = null,
state = null,
stateCode = null,
zipcode = null,
streetName = null,
streetNumber = null,
countryCode = null;
if (result[j].lat != undefined)
latitude = result[j].lat;
if (result[j].lon != undefined)
longitude = result[j].lon;
if (result[j].name != undefined)
name = result[j].name;
if (result[j].type != undefined)
type = result[j].type;
if (type == 'country') {
finalResult.country = name
finalResult.city = null
finalResult.streetName = null
finalResult.state = null
}
else if (type == 'city') {
finalResult.city = name
finalResult.country = null
finalResult.streetName = null
finalResult.state = null
}
else if (type == 'street' || type == 'address') {
finalResult.streetName = name
finalResult.country = null
finalResult.city = null
finalResult.state = null
}
else if (type == 'province') {
finalResult.state = name
finalResult.country = null
finalResult.city = null
finalResult.streetName = null
}
else {
finalResult.country = null
finalResult.city = null
finalResult.streetName = null
finalResult.state = null
}
finalResult.latitude = latitude,
finalResult.longitude = longitude,
finalResult.state = state,
finalResult.stateCode = stateCode,
finalResult.zipcode = zipcode,
finalResult.streetNumber = streetNumber,
finalResult.countryCode = countryCode
resultarray.push(finalResult)
}
我收到的输出是
[{"city":null,"country":"United States","streetName":null,"state":null,"latitude":37.940711,"longitude":-99.041505,"stateCode":null,"zipcode":null,"streetNumber":null,"countryCode":null},{"city":null,"country":"United States","streetName":null,"state":null,"latitude":37.940711,"longitude":-99.041505,"stateCode":null,"zipcode":null,"streetNumber":null,"countryCode":null},{"city":null,"country":"United States","streetName":null,"state":null,"latitude":37.940711,"longitude":-99.041505,"stateCode":null,"zipcode":null,"streetNumber":null,"countryCode":null}]
我不知道哪里出了问题。我需要的正确格式如下
[
{
"city": "Beech Creek",
"country": "United States",
"streetName": null,
"state": "Pennsylvania",
"latitude":41.132832,
"longitude": -77.725902,
"stateCode": null,
"zipcode": null,
"streetNumber": null,
"countryCode": null
}
]
我被困在这里,任何关于这方面的帮助都将非常有帮助
删除这些空赋值:
if (type == 'country') {
finalResult.country = name
//Remove
//finalResult.city = null
//finalResult.streetName = null
//finalResult.state = null
}
//Remove in other places also
var finalResult, resultarray = [];
for (var i = 0; i < result.length; i++) {
if (!finalResult.latitude) finalResult.latitude = result[i].latitude;
if (!finalResult.longitude) finalResult.longitude = result[i].longitude;
switch (result[i].type) {
case "country": finalResult.country = result[i].name; break;
case "city": finalResult.city = result[i].name; break;
case "province": finalResult.state = result[i].name; break;
case "street": finalResult.streetName = result[i].name;
}
}
resultarray.push(finalResult);
这是假设result
是您的初始数组,并且您的初始阵列从最小的项目开始,然后变大(如从streetname到country(。这一点很重要,因为正如我在您的代码中所看到的,最终结果的纬度和经度属于最特定类型的地方。
您可以为streetNumber
、countryCode
、zipCode
、stateCode
添加更多代码,因为我看不出您是如何在初始数组中实现它们的。
相关文章:
- 将一个组合框值传递给其他组合框
- 将多个表格作为一个组合表格提交
- 获取一个组合框值作为innerhtml
- extjs基于另一个组合框值过滤组合框
- 使用组合框填充另一个组合框,以便用户可以运行查询
- 如何根据另一个组合框的选定项目从数据库填充组合框中的项目
- Knob.js-有没有一种方法可以连接表盘,使它们有一个组合的总数
- 如何制作一个组合框,允许我根据选择显示数据
- 如何使用Javascript禁用在另一个组合框中选择的组合框的值
- 基于另一个组合框选择的自动填充组合框
- Browserify-require()一个组合字符串不会将模块构建到输出脚本中
- 如何在XPages CSJS中选择一个组合框值
- 是否有一种方法来放置一个树列在一个组合框
- 从组合框和文本输入字段中为另一个组合框赋值
- php、javascript和mysql如何连接到一个组合,如果点击,则通过另一个查询进入另一个组合
- ExtJS:连接一个存储到一个组合框
- ExtJS使一个组合项目不同
- 使用gulp-angular-templatecache创建一个组合HTML模板文件时,输出文件夹无效
- 通过更改第二个组合框来更新一个组合框
- 如何在HTML中使用另一个组合框来控制一个组合框