如何从反向地理编码结果中获取邮政编码?

Col*_*lin 0 javascript jquery reverse-geocoding google-maps-api-3

我已经在互联网上寻找一个简单的答案,但我似乎无法在任何地方找到它.我做了一个经度和经度的简单反向地理编码,我返回了巨大的结果对象.我从哪里去?这是我到目前为止所拥有的.目前,zipcode返回"undefined".

geocoder.geocode( {'latLng' : event.latLng}, function(results, status) {
    for(var i; i < results.length; i++){
        for(var j=0;j < results[i].address_components.length; j++){
            for(var k=0; k < results[i].address_components[j].types.length; k++){
                if(results[i].address_components[j].types[k] == "postal_code"){
                    var zipcode = results[i].address_components[j].short_name;
                }
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

Gar*_*ker 9

for(var i=0; i < results[0].address_components.length; i++)
{
    var component = results[0].address_components[i];
    if(component.types[0] == "postal_code")
    {
        console.log(component.long_name);
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的工作.基本上它只是在第一个地址组件中搜索邮政编码,因为它包含所有信息.请记住,console.log()是你的朋友.

多年后编辑

感谢可爱的ES6,移动浏览器支持,现在可以更轻松地完成,让我们看一些更简单的方法.首先,我们可以简化循环

for(let component of results[0].address_components))
{
    if(component.types[0] == "postal_code")
    {
        console.log(component.long_name);
    }
}
Run Code Online (Sandbox Code Playgroud)

或者我们可以使用find方法

let postalCode = results[0].address_components.find(function (component) {
    return component.types[0] == "postal_code";
});
console.log(postalCode.long_name);
Run Code Online (Sandbox Code Playgroud)