【问题标题】:Need to alter space from postal code in results array需要更改结果数组中邮政编码的空间
【发布时间】:2015-04-22 08:10:05
【问题描述】:

您好,我需要从

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

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

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

【问题讨论】:

    标签: google-maps google-maps-api-3 geocoding google-geocoding-api


    【解决方案1】:

    我不建议解析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 本身是nullundefined,则不要尝试引用component.short_name,因为这当然会出错。换句话说,如果getAddressComponent() 找不到邮政编码,可以防止程序崩溃。

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

        return {};
    

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

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

        return {};
    

    到:

        return null;
    

    【讨论】:

    • 感谢 Michael Great。它工作正常。我有一个问题,我没有得到这条线,请解释一下。 "var postalCode = component ? component.short_name : '';" .
    猜你喜欢
    • 1970-01-01
    • 2012-05-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多