我不建议解析formatted_address 来获取邮政编码或任何其他特定地址字段。相反,您应该扫描address_components 并检查每个数组的types 以找到您需要的地址字段。这比解析格式化字符串可靠得多。
有了邮政编码后,删除空格就很简单了。
要查找results 数组中条目的邮政编码(例如results[0]),您可以使用如下代码:
function getAddressComponent( result, type ) {
var components = result.address_components;
for( var i = 0; i < components.length; ++i ) {
var component = components[i], types = component.types;
for( var k = 0; k < types.length; ++k ) {
if( types[k] == type ){
return component;
}
}
}
return {};
}
var component = getAddressComponent( results[0], 'postal_code' );
var postalCode = component ? component.short_name : '';
var postalCodeNoSpace = postalCode.replace( ' ', '' );
console.log( postalCodeNoSpace );
更新回复您的评论:
您使用 ? 和 : 询问的代码使用 JavaScript 和许多其他语言中的 conditional operator:
var postalCode = component ? component.short_name : '';
这就像这个看起来更熟悉的较长形式:
if( component )
postalCode = component.short_name;
else
postalCode = '';
如果component 本身是null 或undefined,则不要尝试引用component.short_name,因为这当然会出错。换句话说,如果getAddressComponent() 找不到邮政编码,可以防止程序崩溃。
但有趣的是,我使用它的方式有一个错误。看getAddressComponent()的最后一行:
return {};
最初我打算在那里返回null - 然后你询问的代码是正确的 - 但由于某种原因,我决定返回一个空对象。因此,有问题的代码与该更改不太正确。
解决此问题的一种方法是回到我最初打算做的事情,并将getAddressComponent() 的最后一行更改为:
return {};
到:
return null;