Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery从Google地理编码API JSON响应中获取基于类型的值_Javascript_Jquery_Json_Google Maps_Foreach - Fatal编程技术网

Javascript 使用jQuery从Google地理编码API JSON响应中获取基于类型的值

Javascript 使用jQuery从Google地理编码API JSON响应中获取基于类型的值,javascript,jquery,json,google-maps,foreach,Javascript,Jquery,Json,Google Maps,Foreach,我正在从谷歌地理编码API获取JSON响应 其格式如下: { "results" : [ { "address_components" : [ { "long_name" : "Department of Information science and engineering", "short_name" : "Department of Information science

我正在从谷歌地理编码API获取JSON响应

其格式如下:

{
   "results" : [
      {
         "address_components" : [
            {
               "long_name" : "Department of Information science and engineering",
               "short_name" : "Department of Information science and engineering",
               "types" : [ "premise" ]
            },
            {
               "long_name" : "Gokul",
               "short_name" : "Gokul",
               "types" : [ "political", "sublocality", "sublocality_level_1" ]
            },
            {
               "long_name" : "Hubballi",
               "short_name" : "Hubballi",
               "types" : [ "locality", "political" ]
            },
            {
               "long_name" : "Dharwad",
               "short_name" : "Dharwad",
               "types" : [ "administrative_area_level_2", "political" ]
            },
            {
               "long_name" : "Karnataka",
               "short_name" : "KA",
               "types" : [ "administrative_area_level_1", "political" ]
            },
            {
               "long_name" : "India",
               "short_name" : "IN",
               "types" : [ "country", "political" ]
            },
            {
               "long_name" : "580030",
               "short_name" : "580030",
               "types" : [ "postal_code" ]
            }
现在我可以使用

"Postal Code:" + json.results[0].address_components[6].long_name
但从我的研究中,我发现
地址组件[6]
可能并不总是相同的数据。因此,我希望根据类型获取值,以便始终获得正确的数据

现在我找到了一种使用php的方法:

foreach ($jsondata["results"] as $result) {
    foreach ($result["address_components"] as $address) {
        if (in_array("sublocality", $address["types"])) {
            $city = $address["long_name"];
        }
    }
}
但我不知道如何迭代每个结果并根据JavaScript/JQuery中的类型获取值


有人能告诉我它是如何完成的吗?

您可以使用jQuery的

$.each(jsondata.results,(index,result)=>{//{
if(typeof address.types.sublocality!=“undefined”){//检查值是否在数组中
var city=地址.long\u名称;
}
});
});

您可以使用jQuery的

$.each(jsondata.results,(index,result)=>{//{
if(typeof address.types.sublocality!=“undefined”){//检查值是否在数组中
var city=地址.long\u名称;
}
});
});

Javascript

var x={
“结果”:[
{
“地址组件”:[
{
“long_名称”:“信息科学与工程系”,
“简称”:“信息科学与工程系”,
“类型”:[“前提”]
},
{
“long_name”:“Gokul”,
“短名称”:“Gokul”,
“类型”:[“政治”、“次地方性”、“次地方性”1级]
},
{
“龙_名称”:“Hubballi”,
“短名称”:“Hubballi”,
“类型”:[“地区”、“政治”]
},
{
“long_name”:“Dharwad”,
“短名称”:“达瓦德”,
“类型”:[“行政区\级别\ 2”,“政治”]
},
{
“龙_名称”:“卡纳塔克邦”,
“短名称”:“KA”,
“类型”:[“行政区”和“一级”,“政治”]
},
{
“long_名称”:“印度”,
“短名称”:“IN”,
“类型”:[“国家”、“政治”]
},
{
“long_name”:“580030”,
“短名称”:“580030”,
“类型”:[“邮政编码”]
}
]
}
]
}
x、 结果.forEach(函数(元素、索引){
元素[Object.keys(元素)].forEach(函数(元素,i){
var city=(el.types.includes('sublocality'))?el.long_name:'None';
控制台日志(城市)
});

})
Javascript

var x={
“结果”:[
{
“地址组件”:[
{
“long_名称”:“信息科学与工程系”,
“简称”:“信息科学与工程系”,
“类型”:[“前提”]
},
{
“long_name”:“Gokul”,
“短名称”:“Gokul”,
“类型”:[“政治”、“次地方性”、“次地方性”1级]
},
{
“龙_名称”:“Hubballi”,
“短名称”:“Hubballi”,
“类型”:[“地区”、“政治”]
},
{
“long_name”:“Dharwad”,
“短名称”:“达瓦德”,
“类型”:[“行政区\级别\ 2”,“政治”]
},
{
“龙_名称”:“卡纳塔克邦”,
“短名称”:“KA”,
“类型”:[“行政区”和“一级”,“政治”]
},
{
“long_名称”:“印度”,
“短名称”:“IN”,
“类型”:[“国家”、“政治”]
},
{
“long_name”:“580030”,
“短名称”:“580030”,
“类型”:[“邮政编码”]
}
]
}
]
}
x、 结果.forEach(函数(元素、索引){
元素[Object.keys(元素)].forEach(函数(元素,i){
var city=(el.types.includes('sublocality'))?el.long_name:'None';
控制台日志(城市)
});

})
您可以使用下面给定的代码(纯JavaScript),它实现了与使用PHP实现的相同的功能。运行代码段以查看输出

var结果=[{
“地址组件”:[{
“long_名称”:“信息科学与工程系”,
“简称”:“信息科学与工程系”,
“类型”:[“前提”]
}, {
“long_name”:“Gokul”,
“短名称”:“Gokul”,
“类型”:[“政治”、“次地方性”、“次地方性”1级]
}, {
“龙_名称”:“Hubballi”,
“短名称”:“Hubballi”,
“类型”:[“地区”、“政治”]
}, {
“long_name”:“Dharwad”,
“短名称”:“达瓦德”,
“类型”:[“行政区\级别\ 2”,“政治”]
}, {
“龙_名称”:“卡纳塔克邦”,
“短名称”:“KA”,
“类型”:[“行政区”和“一级”,“政治”]
}, {
“long_名称”:“印度”,
“短名称”:“IN”,
“类型”:[“国家”、“政治”]
}, {
“long_name”:“580030”,
“短名称”:“580030”,
“类型”:[“邮政编码”]
}]
}];
对于(结果的结果){
for(结果的地址。地址\u组件){
if(address.types.indexOf(“子本地”)!=-1){
var city=地址.long\u名称;
警报(城市);
}
}

}
您可以使用下面给定的代码(纯JavaScript),它实现了与使用PHP实现的相同的功能。运行代码段以查看输出

var结果=[{
“地址组件”:[{
“long_名称”:“信息科学与工程系”,
“简称”:“信息科学与工程系”,
$.each(jsondata.results, (index, result) => { // <-- ES2016 notation
    $.each(result.address_components, (jndex, address) => {
        if (typeof address.types.sublocality != "undefined"){ // check if value is in an array
            var city = address.long_name;
        }
    });
});
function get_address(json_data, types, short_name) {
// types - the types value that you want to fetch. 
// Eg: "administrative_area_level_2", "country"
// short_name - boolean indicating whether we need short name or long name
// true - short name fetched. false - long name fetched

    short_name = typeof short_name == 'undefined' ? false : short_name //false by default

    results = [];
    for (var i=0; i<json_data.results.length; i++) {
        var ad_comp = json_data.results[i].address_components;
        for (var j=0; j<ad_comp.length; j++) {
            // Check whether ad_comp exists
            if (ad_comp[j].types.indexOf(types) !== -1) {
                results.push(short_name ? ad_comp[j].short_name : ad_comp[j].long_name);
            }
        }
    }

    // Return single match or multiple matches.
    if (results.length == 1) {
        return results[0];
    } else {
        return results;
    }
}

// Call function to get data.
var postal_code = get_address(jsondata, "postal_code");
correct in above get_address answer:
function get_address(json_data, types, short_name) {
// types - the types value that you want to fetch.
// Eg: "administrative_area_level_2", "country"
// short_name - boolean indicating whether we need short name or long name
// true - short name fetched. false - long name fetched

    short_name = typeof short_name == 'undefined' ? false : short_name //false by default

    tmpResults = [];

    $.each(json_data, (index, result) => { // <-- ES2016 notation
        $.each(result.address_components, (jndex, address) => {
            if (address.types.indexOf(types) != -1){ // check if value is in an array
                tmpResults(short_name ? address.short_name : address.long_name);
            }
        });
    });

    // Return single match or multiple matches.
    if (tmpResults.length == 1) {
        return tmpResults[0];
    } else {
        return tmpResults;
    }
}