使用javascript将一个对象数组组合为一个

combinig an object array into one using javascript

本文关键字:一个 组合 javascript 一个对象 数组 使用      更新时间:2023-09-26

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(。这一点很重要,因为正如我在您的代码中所看到的,最终结果的纬度和经度属于最特定类型的地方。

您可以为streetNumbercountryCodezipCodestateCode添加更多代码,因为我看不出您是如何在初始数组中实现它们的。