需要从结果数组中的邮政编码更改 space

Need to alter space from postal code in results array

你好我的要求需要从

获取邮政编码
var address= results[0].formatted_address ;  

这个格式化值。 因为冥界地址有"Danzigerkade 12,1013 AP Amsterdam,Netherlands"这种地址。但我不想要这样的邮政编码“1013 AP”。我需要这样的“1013AP”。

请给我解决方案。 提前致谢。

我不建议解析 formatted_address 来获取邮政编码或任何其他特定地址字段。相反,您应该扫描 address_components 并检查每个数组的 types 数组以找到您需要的地址字段。这比解析格式化字符串可靠得多。

有了邮政编码后,删除 space 就很简单了。

要查找 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 本身是 nullundefined,我们的想法是不要尝试引用 component.short_name,因为那当然会出错。换句话说,如果 getAddressComponent() 找不到邮政编码,保护程序不会崩溃。

但有趣的是,我使用它的方式存在一个错误。看getAddressComponent()的最后一行:

    return {};

最初我打算去 return null 那里 - 然后你问的代码应该是正确的 - 但出于某种原因我决定 return 一个空对象.因此,有问题的代码与该更改不太正确。

解决此问题的一种方法是回到我最初打算做的事情,并将 getAddressComponent() 的最后一行更改为:

    return {};

至:

    return null;