在javascript中从数组中获取特定元素

时间:2018-02-01 17:06:15

标签: javascript arrays google-maps

我尝试使用地理编码实现google-maps到我的网站及其工作到目前为止。

我的问题是我从谷歌地图中获取地址组件。

以下是我如何构建数组的示例:

    {
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "1600",
               "short_name" : "1600",
               "types" : [ "street_number" ]
            },
            {
               "long_name" : "Amphitheatre Pkwy",
               "short_name" : "Amphitheatre Pkwy",
               "types" : [ "route" ]
            },
            {
               "long_name" : "Mountain View",
               "short_name" : "Mountain View",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Santa Clara County",
               "short_name" : "Santa Clara County",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "California",
               "short_name" : "CA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "United States",
               "short_name" : "US",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "94043",
               "short_name" : "94043",
               "types" : [ "postal_code" ]
            }
         ],
         "formatted_address" : "1600 Amphitheatre Parkway, Mountain View, CA 94043, USA",
         "geometry" : {
            "location" : {
               "lat" : 37.4224764,
               "lng" : -122.0842499
            },
            "location_type" : "ROOFTOP",
            "viewport" : {
               "northeast" : {
                  "lat" : 37.4238253802915,
                  "lng" : -122.0829009197085
               },
               "southwest" : {
                  "lat" : 37.4211274197085,
                  "lng" : -122.0855988802915
               }
            }
         },
         "place_id" : "ChIJ2eUgeAK6j4ARbn5u_wAGqWA",
         "types" : [ "street_address" ]
      }
   ],
   "status" : "OK"
}

我写了#34;响应数组"在这样的变量中:

var addressComponents = response.data.results[0].address_components;

但我想做的是,例如,在变量中只写街道名称,例如:

var streetname = response.data.results[0].address_components.street_number.long_name;

有一种简单的方法吗?我通过循环获取信息并将其写入变量。问题是,有时会有街道号码,有时候没有。因此,不清楚哪条信息属于哪个变量。

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

您可以使用Array.prototype.find查找具有"route"类型的组件,然后在找到该组件时访问long_name属性。这将为您提供街道名称。

var addressComponents = response.data.results[0].address_components;
var streetNameComponent = addressComponents.find(function (comp) {
   return comp.types[0] === "route";
});
if (streetNameComponent !== undefined) {
  var streetName = streetNameComponent.long_name;
  // ...
}

答案 1 :(得分:0)

您返回的是JSON,您可以使用JSON.parse()解析它并将其放入数组中。然后你可以迭代数组中的每个对象并使用对象的属性来获取你想要的数据,因为它听起来你只想要街道,我会迭代然后解析的json字符串的address_components属性,然后寻找具有值为" route"的属性类型的对象;然后获取该对象的长名称属性值。