将某些值从一个JSON对象添加到另一个

时间:2019-02-25 20:14:13

标签: javascript

我正试图将某些值从JSON对象添加到新的JSON对象。因为我正在使用的当前地址解析器似乎没有提供有效的geoJSON以供在地图加载功能中使用。那么我可以在新对象中添加允许的值,以便对其进行查询吗?

我有geoCoder的返回结果,我使用剥离了这些值

var businessLoc = JSON.stringify(business1);

permittedValues = [].concat(
  ...business1.map(v => [
    "type:" + v.type + ",",
    "geometry{" + v.geometry + "}"
  ])
);

console.log(permittedValues);

var newObj = {
  type: "FeatureCollection",
  features: [{

  }]
};

var jsonObj = {};

features = newObj.features.geometry;

for (i = 0; i < permittedValues.length; i++) {
  newObj.features[i] = permittedValues[i];
}

console.log(newObj);

map.addSource("sample", {
  type: "geojson",
  data: newObj
});

结果

0: "type:Feature,"
1: "geometry{[object Object]}"
2: "type:Feature,"
3: "geometry{[object Object]}"
4: "type:Feature,"
5: "geometry{[object Object]}"
6: "type:Feature,"
7: "geometry{[object Object]}"
8: "type:Feature,"
9: "geometry{[object Object]}"
10: "type:Feature,"
11: "geometry{[object Object]}"
12: "type:Feature,"
13: "geometry{[object Object]}"

我想要什么

  {
    "type": "FeatureCollection",
    "features": [
      {
        "type": "Feature",
        "geometry": {
          "type": "Point",
          "coordinates": [
            -77.034084142948,
            38.909671288923
          ]
        },

业务对象

[
    {
        "id": "place.5130493894212350",
        "type": "Feature",
        "place_type": [
            "place"
        ],
        "relevance": 0.5,
        "properties": {
            "wikidata": "Q1707"
        },
        "text": "Kiel",
        "place_name": "Kiel, Schleswig-Holstein, Germany",
        "bbox": [
            10.033079,
            54.250613,
            10.218225,
            54.43281
        ],
        "center": [
            10.14056,
            54.32528
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                10.14056,
                54.32528
            ]
        },
        "context": [
            {
                "id": "region.3063011031043490",
                "short_code": "DE-SH",
                "wikidata": "Q1194",
                "text": "Schleswig-Holstein"
            },
            {
                "id": "country.10743216036480410",
                "short_code": "de",
                "wikidata": "Q183",
                "text": "Germany"
            }
        ]
    },
    {
        "id": "address.8335542519828468",
        "type": "Feature",
        "place_type": [
            "address"
        ],
        "relevance": 0.99,
        "properties": {
            "accuracy": "street"
        },
        "text": "University Roundabout",
        "place_name": "University Roundabout, Bournemouth, Bournemouth, BH12 5EQ, United Kingdom",
        "center": [
            -1.898631,
            50.744119
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -1.898631,
                50.744119
            ]
        },
        "context": [
            {
                "id": "postcode.17127909006362680",
                "text": "BH12 5EQ"
            },
            {
                "id": "locality.9889701754251510",
                "wikidata": "Q170478",
                "text": "Bournemouth"
            },
            {
                "id": "place.6137039763504313",
                "wikidata": "Q170478",
                "text": "Bournemouth"
            },
            {
                "id": "district.18683624152369430",
                "wikidata": "Q203349",
                "text": "Poole"
            },
            {
                "id": "region.11773787231453920",
                "short_code": "GB-ENG",
                "wikidata": "Q21",
                "text": "England"
            },
            {
                "id": "country.8605848117814600",
                "short_code": "gb",
                "wikidata": "Q145",
                "text": "United Kingdom"
            }
        ]
    },
    {
        "id": "address.8335542519828468",
        "type": "Feature",
        "place_type": [
            "address"
        ],
        "relevance": 0.99,
        "properties": {
            "accuracy": "street"
        },
        "text": "University Roundabout",
        "place_name": "University Roundabout, Bournemouth, Bournemouth, BH12 5EQ, United Kingdom",
        "center": [
            -1.898631,
            50.744119
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -1.898631,
                50.744119
            ]
        },
        "context": [
            {
                "id": "postcode.17127909006362680",
                "text": "BH12 5EQ"
            },
            {
                "id": "locality.9889701754251510",
                "wikidata": "Q170478",
                "text": "Bournemouth"
            },
            {
                "id": "place.6137039763504313",
                "wikidata": "Q170478",
                "text": "Bournemouth"
            },
            {
                "id": "district.18683624152369430",
                "wikidata": "Q203349",
                "text": "Poole"
            },
            {
                "id": "region.11773787231453920",
                "short_code": "GB-ENG",
                "wikidata": "Q21",
                "text": "England"
            },
            {
                "id": "country.8605848117814600",
                "short_code": "gb",
                "wikidata": "Q145",
                "text": "United Kingdom"
            }
        ]
    },
    {
        "id": "postcode.13814443524261080",
        "type": "Feature",
        "place_type": [
            "postcode"
        ],
        "relevance": 0.5,
        "properties": {},
        "text": "PH1 1RX",
        "place_name": "PH1 1RX, Perth, Perth And Kinross, Scotland, United Kingdom",
        "center": [
            -3.48232183369072,
            56.3888139521762
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -3.48232183369072,
                56.3888139521762
            ]
        },
        "context": [
            {
                "id": "place.8737048398313509",
                "wikidata": "Q203000",
                "text": "Perth"
            },
            {
                "id": "district.15421108926775810",
                "wikidata": "Q207679",
                "text": "Perth And Kinross"
            },
            {
                "id": "region.7992878537156640",
                "short_code": "GB-SCT",
                "wikidata": "Q22",
                "text": "Scotland"
            },
            {
                "id": "country.8605848117814600",
                "short_code": "gb",
                "wikidata": "Q145",
                "text": "United Kingdom"
            }
        ]
    },
    {
        "id": "place.10346294296913350",
        "type": "Feature",
        "place_type": [
            "place"
        ],
        "relevance": 0.25,
        "properties": {
            "wikidata": "Q1496283"
        },
        "text": "Moreno",
        "place_name": "Moreno, Buenos Aires, Argentina",
        "bbox": [
            -58.890257,
            -34.686207,
            -58.713205,
            -34.508089
        ],
        "center": [
            -58.78724,
            -34.65762
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -58.78724,
                -34.65762
            ]
        },
        "context": [
            {
                "id": "region.15410301253886620",
                "short_code": "AR-B",
                "wikidata": "Q44754",
                "text": "Buenos Aires"
            },
            {
                "id": "country.10192800254801190",
                "short_code": "ar",
                "wikidata": "Q414",
                "text": "Argentina"
            }
        ]
    },
    {
        "id": "place.10346294296913350",
        "type": "Feature",
        "place_type": [
            "place"
        ],
        "relevance": 0.25,
        "properties": {
            "wikidata": "Q1496283"
        },
        "text": "Moreno",
        "place_name": "Moreno, Buenos Aires, Argentina",
        "bbox": [
            -58.890257,
            -34.686207,
            -58.713205,
            -34.508089
        ],
        "center": [
            -58.78724,
            -34.65762
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -58.78724,
                -34.65762
            ]
        },
        "context": [
            {
                "id": "region.15410301253886620",
                "short_code": "AR-B",
                "wikidata": "Q44754",
                "text": "Buenos Aires"
            },
            {
                "id": "country.10192800254801190",
                "short_code": "ar",
                "wikidata": "Q414",
                "text": "Argentina"
            }
        ]
    },
    {
        "id": "address.4377709491448262",
        "type": "Feature",
        "place_type": [
            "address"
        ],
        "relevance": 0.3205128205128205,
        "properties": {
            "accuracy": "street"
        },
        "text": "Fr Access",
        "place_name": "Fr Access, Lubbock, Texas 79413, United States",
        "matching_text": "University Off",
        "matching_place_name": "University Off, Lubbock, Texas 79413, United States",
        "center": [
            -101.870484,
            33.541972
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -101.870484,
                33.541972
            ]
        },
        "context": [
            {
                "id": "neighborhood.2103733",
                "text": "Caprock"
            },
            {
                "id": "postcode.11511121744851560",
                "text": "79413"
            },
            {
                "id": "place.2344342379218940",
                "wikidata": "Q49273",
                "text": "Lubbock"
            },
            {
                "id": "region.5362387429342410",
                "short_code": "US-TX",
                "wikidata": "Q1439",
                "text": "Texas"
            },
            {
                "id": "country.9053006287256050",
                "short_code": "us",
                "wikidata": "Q30",
                "text": "United States"
            }
        ]
    }
]

即将开始工作

permittedValues = [].concat(...business1.map((v) => [v.geometry]))



var newObj = {
  type: "FeatureCollection",
  features:[{
    type:'Feature',
    geometry:permittedValues[0]
  }]
};

2 个答案:

答案 0 :(得分:1)

在创建permittedValues时不要使用字符串连接,只需提取所需的属性即可。

var permittedValues = business1.map(({type, geometry}) => ({type, geometry}));
var newObj = {
  type: "FeatureCollection",
  features: permittedValues
};

var business1 = [
    {
        "id": "place.5130493894212350",
        "type": "Feature",
        "place_type": [
            "place"
        ],
        "relevance": 0.5,
        "properties": {
            "wikidata": "Q1707"
        },
        "text": "Kiel",
        "place_name": "Kiel, Schleswig-Holstein, Germany",
        "bbox": [
            10.033079,
            54.250613,
            10.218225,
            54.43281
        ],
        "center": [
            10.14056,
            54.32528
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                10.14056,
                54.32528
            ]
        },
        "context": [
            {
                "id": "region.3063011031043490",
                "short_code": "DE-SH",
                "wikidata": "Q1194",
                "text": "Schleswig-Holstein"
            },
            {
                "id": "country.10743216036480410",
                "short_code": "de",
                "wikidata": "Q183",
                "text": "Germany"
            }
        ]
    },
    {
        "id": "address.8335542519828468",
        "type": "Feature",
        "place_type": [
            "address"
        ],
        "relevance": 0.99,
        "properties": {
            "accuracy": "street"
        },
        "text": "University Roundabout",
        "place_name": "University Roundabout, Bournemouth, Bournemouth, BH12 5EQ, United Kingdom",
        "center": [
            -1.898631,
            50.744119
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -1.898631,
                50.744119
            ]
        },
        "context": [
            {
                "id": "postcode.17127909006362680",
                "text": "BH12 5EQ"
            },
            {
                "id": "locality.9889701754251510",
                "wikidata": "Q170478",
                "text": "Bournemouth"
            },
            {
                "id": "place.6137039763504313",
                "wikidata": "Q170478",
                "text": "Bournemouth"
            },
            {
                "id": "district.18683624152369430",
                "wikidata": "Q203349",
                "text": "Poole"
            },
            {
                "id": "region.11773787231453920",
                "short_code": "GB-ENG",
                "wikidata": "Q21",
                "text": "England"
            },
            {
                "id": "country.8605848117814600",
                "short_code": "gb",
                "wikidata": "Q145",
                "text": "United Kingdom"
            }
        ]
    },
    {
        "id": "address.8335542519828468",
        "type": "Feature",
        "place_type": [
            "address"
        ],
        "relevance": 0.99,
        "properties": {
            "accuracy": "street"
        },
        "text": "University Roundabout",
        "place_name": "University Roundabout, Bournemouth, Bournemouth, BH12 5EQ, United Kingdom",
        "center": [
            -1.898631,
            50.744119
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -1.898631,
                50.744119
            ]
        },
        "context": [
            {
                "id": "postcode.17127909006362680",
                "text": "BH12 5EQ"
            },
            {
                "id": "locality.9889701754251510",
                "wikidata": "Q170478",
                "text": "Bournemouth"
            },
            {
                "id": "place.6137039763504313",
                "wikidata": "Q170478",
                "text": "Bournemouth"
            },
            {
                "id": "district.18683624152369430",
                "wikidata": "Q203349",
                "text": "Poole"
            },
            {
                "id": "region.11773787231453920",
                "short_code": "GB-ENG",
                "wikidata": "Q21",
                "text": "England"
            },
            {
                "id": "country.8605848117814600",
                "short_code": "gb",
                "wikidata": "Q145",
                "text": "United Kingdom"
            }
        ]
    },
    {
        "id": "postcode.13814443524261080",
        "type": "Feature",
        "place_type": [
            "postcode"
        ],
        "relevance": 0.5,
        "properties": {},
        "text": "PH1 1RX",
        "place_name": "PH1 1RX, Perth, Perth And Kinross, Scotland, United Kingdom",
        "center": [
            -3.48232183369072,
            56.3888139521762
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -3.48232183369072,
                56.3888139521762
            ]
        },
        "context": [
            {
                "id": "place.8737048398313509",
                "wikidata": "Q203000",
                "text": "Perth"
            },
            {
                "id": "district.15421108926775810",
                "wikidata": "Q207679",
                "text": "Perth And Kinross"
            },
            {
                "id": "region.7992878537156640",
                "short_code": "GB-SCT",
                "wikidata": "Q22",
                "text": "Scotland"
            },
            {
                "id": "country.8605848117814600",
                "short_code": "gb",
                "wikidata": "Q145",
                "text": "United Kingdom"
            }
        ]
    },
    {
        "id": "place.10346294296913350",
        "type": "Feature",
        "place_type": [
            "place"
        ],
        "relevance": 0.25,
        "properties": {
            "wikidata": "Q1496283"
        },
        "text": "Moreno",
        "place_name": "Moreno, Buenos Aires, Argentina",
        "bbox": [
            -58.890257,
            -34.686207,
            -58.713205,
            -34.508089
        ],
        "center": [
            -58.78724,
            -34.65762
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -58.78724,
                -34.65762
            ]
        },
        "context": [
            {
                "id": "region.15410301253886620",
                "short_code": "AR-B",
                "wikidata": "Q44754",
                "text": "Buenos Aires"
            },
            {
                "id": "country.10192800254801190",
                "short_code": "ar",
                "wikidata": "Q414",
                "text": "Argentina"
            }
        ]
    },
    {
        "id": "place.10346294296913350",
        "type": "Feature",
        "place_type": [
            "place"
        ],
        "relevance": 0.25,
        "properties": {
            "wikidata": "Q1496283"
        },
        "text": "Moreno",
        "place_name": "Moreno, Buenos Aires, Argentina",
        "bbox": [
            -58.890257,
            -34.686207,
            -58.713205,
            -34.508089
        ],
        "center": [
            -58.78724,
            -34.65762
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -58.78724,
                -34.65762
            ]
        },
        "context": [
            {
                "id": "region.15410301253886620",
                "short_code": "AR-B",
                "wikidata": "Q44754",
                "text": "Buenos Aires"
            },
            {
                "id": "country.10192800254801190",
                "short_code": "ar",
                "wikidata": "Q414",
                "text": "Argentina"
            }
        ]
    },
    {
        "id": "address.4377709491448262",
        "type": "Feature",
        "place_type": [
            "address"
        ],
        "relevance": 0.3205128205128205,
        "properties": {
            "accuracy": "street"
        },
        "text": "Fr Access",
        "place_name": "Fr Access, Lubbock, Texas 79413, United States",
        "matching_text": "University Off",
        "matching_place_name": "University Off, Lubbock, Texas 79413, United States",
        "center": [
            -101.870484,
            33.541972
        ],
        "geometry": {
            "type": "Point",
            "coordinates": [
                -101.870484,
                33.541972
            ]
        },
        "context": [
            {
                "id": "neighborhood.2103733",
                "text": "Caprock"
            },
            {
                "id": "postcode.11511121744851560",
                "text": "79413"
            },
            {
                "id": "place.2344342379218940",
                "wikidata": "Q49273",
                "text": "Lubbock"
            },
            {
                "id": "region.5362387429342410",
                "short_code": "US-TX",
                "wikidata": "Q1439",
                "text": "Texas"
            },
            {
                "id": "country.9053006287256050",
                "short_code": "us",
                "wikidata": "Q30",
                "text": "United States"
            }
        ]
    }
];

var permittedValues = business1.map(({type, geometry}) => ({type, geometry}));
var newObj = {
  type: "FeatureCollection",
  features: permittedValues
};

console.log(newObj);

答案 1 :(得分:0)

假设返回的结果是“结果”,您是否尝试访问geometry[0]?您正在尝试做的事情似乎很费劲。是否没有getter或API /响应中的方法可以访问此数据?