Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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搜索JSON数组_Javascript_Jquery_Json - Fatal编程技术网

使用JavaScript/jQuery搜索JSON数组

使用JavaScript/jQuery搜索JSON数组,javascript,jquery,json,Javascript,Jquery,Json,我正在使用谷歌地图返回位置名称和用户所在位置的状态。这是我感兴趣的部分: "address_components" : [ { "long_name" : "Salem", "short_name" : "Salem", "types" : [ "locality", "political" ] }, { "long_name" : "Rockingham",

我正在使用谷歌地图返回位置名称和用户所在位置的状态。这是我感兴趣的部分:

"address_components" : [
        {
           "long_name" : "Salem",
           "short_name" : "Salem",
           "types" : [ "locality", "political" ]
        },
        {
           "long_name" : "Rockingham",
           "short_name" : "Rockingham",
           "types" : [ "administrative_area_level_2", "political" ]
        },
        {
           "long_name" : "New Hampshire",
           "short_name" : "NH",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "United States",
           "short_name" : "US",
           "types" : [ "country", "political" ]
        }
     ]
有没有办法找到哪些对象包含“locality”和“administrative\u area\u level\u 1”值,并使用JavaScript或jQuery返回相应对象的“long\u name”字符串?我该怎么做呢?

试试这个:

var data = {"address_components" : [
        {
           "long_name" : "Salem",
           "short_name" : "Salem",
           "types" : [ "locality", "political" ]
        },
        {
           "long_name" : "Rockingham",
           "short_name" : "Rockingham",
           "types" : [ "administrative_area_level_2", "political" ]
        },
        {
           "long_name" : "New Hampshire",
           "short_name" : "NH",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "United States",
           "short_name" : "US",
           "types" : [ "country", "political" ]
        }
]};
for(var i = 0; i < data.address_components.length; i++){
    if(data[i].long_name == 'something'){
      // do something
    }
    //or
    if(data[i].types[0] == 'administrative_area_level_1'){
      // do something
    }
}
var data={“地址\组件”:[
{
“long_name”:“Salem”,
“短名称”:“塞勒姆”,
“类型”:[“地区”、“政治”]
},
{
“龙_名称”:“Rockingham”,
“短名称”:“Rockingham”,
“类型”:[“行政区\级别\ 2”,“政治”]
},
{
“long_姓名”:“新罕布什尔州”,
“短名称”:“NH”,
“类型”:[“行政区”和“一级”,“政治”]
},
{
“long_name”:“美国”,
“简称”:“美国”,
“类型”:[“国家”、“政治”]
}
]};
对于(变量i=0;i
试试这个:

var data = {"address_components" : [
        {
           "long_name" : "Salem",
           "short_name" : "Salem",
           "types" : [ "locality", "political" ]
        },
        {
           "long_name" : "Rockingham",
           "short_name" : "Rockingham",
           "types" : [ "administrative_area_level_2", "political" ]
        },
        {
           "long_name" : "New Hampshire",
           "short_name" : "NH",
           "types" : [ "administrative_area_level_1", "political" ]
        },
        {
           "long_name" : "United States",
           "short_name" : "US",
           "types" : [ "country", "political" ]
        }
]};
for(var i = 0; i < data.address_components.length; i++){
    if(data[i].long_name == 'something'){
      // do something
    }
    //or
    if(data[i].types[0] == 'administrative_area_level_1'){
      // do something
    }
}
var data={“地址\组件”:[
{
“long_name”:“Salem”,
“短名称”:“塞勒姆”,
“类型”:[“地区”、“政治”]
},
{
“龙_名称”:“Rockingham”,
“短名称”:“Rockingham”,
“类型”:[“行政区\级别\ 2”,“政治”]
},
{
“long_姓名”:“新罕布什尔州”,
“短名称”:“NH”,
“类型”:[“行政区”和“一级”,“政治”]
},
{
“long_name”:“美国”,
“简称”:“美国”,
“类型”:[“国家”、“政治”]
}
]};
对于(变量i=0;i
试试这个

var addr_comp = [{"long_name": "Salem","short_name": "Salem","types": ["locality", "political"]}, {"long_name": "Rockingham","short_name": "Rockingham","types": ["administrative_area_level_2", "political"]}, {"long_name": "New Hampshire","short_name": "NH","types": ["administrative_area_level_1", "political"]}, {"long_name": "United States","short_name": "US","types": ["country", "political"]}];
function getlocalityAdminLevel(addrType){
    for(var a=0,len=addr_comp.length;a<len;a++){
        ac=addr_comp[a];
        if(ac.types){
            for (var t = 0, tl = ac.types.length; t < tl; t++) {
                ty = ac.types[t];
                if (ty == addrType) {
                    return ac;break;
                } 
            }
        }
    }
}
console.log(getlocalityAdminLevel('locality'));
console.log(getlocalityAdminLevel('administrative_area_level_1'));
试试这个

var addr_comp = [{"long_name": "Salem","short_name": "Salem","types": ["locality", "political"]}, {"long_name": "Rockingham","short_name": "Rockingham","types": ["administrative_area_level_2", "political"]}, {"long_name": "New Hampshire","short_name": "NH","types": ["administrative_area_level_1", "political"]}, {"long_name": "United States","short_name": "US","types": ["country", "political"]}];
function getlocalityAdminLevel(addrType){
    for(var a=0,len=addr_comp.length;a<len;a++){
        ac=addr_comp[a];
        if(ac.types){
            for (var t = 0, tl = ac.types.length; t < tl; t++) {
                ty = ac.types[t];
                if (ty == addrType) {
                    return ac;break;
                } 
            }
        }
    }
}
console.log(getlocalityAdminLevel('locality'));
console.log(getlocalityAdminLevel('administrative_area_level_1'));

好了。请找到小提琴

通过使用如下函数:

function getLocality(){
    for(var i = 0 ; i< address_components.length; i++){
        var obj = address_components[i];
        var arr = obj["types"];
        for(var j = 0; j<arr.length;j++ ){
            if(arr[j] == "locality"){
                return obj;
            }
        }

    }
}

其中address\u components是谷歌地图返回的数组。请找到小提琴

通过使用如下函数:

function getLocality(){
    for(var i = 0 ; i< address_components.length; i++){
        var obj = address_components[i];
        var arr = obj["types"];
        for(var j = 0; j<arr.length;j++ ){
            if(arr[j] == "locality"){
                return obj;
            }
        }

    }
}

其中address_components是谷歌地图返回的数组,您可以使用这个JS库,而不是污染您的代码;definatjs(),它使用“search”方法扩展了全局对象JSON。此方法使您能够使用XPath查询语法搜索JSON结构。结果是,您的代码变得更加清晰易读

这是工作小提琴

var数据={
...
},
res=JSON.search(数据,'/*[types=“administrative_area_level_1”或types=“locality”]),
str='';

对于(var i=0;i,您可以使用这个JS lib;definatitjs(),它使用“search”方法扩展了全局对象JSON。这个方法使您能够使用XPath查询语法搜索JSON结构。结果是您的代码变得更加干净和可读

这是工作小提琴;

var数据={
...
},
res=JSON.search(数据,'/*[types=“administrative_area_level_1”或types=“locality”]),
str='';

对于(var i=0;i可能重复检查当前选定对象是否具有包含字符串“Location or administrative_area_level_1”的数组)。@AkshayKhandelwal,如何执行此操作?请在下面检查我的答案可能重复检查当前选定对象是否具有包含字符串“Location or administrative_area_level_1”的数组..@AkshayKhandelwal,我该怎么做?检查我下面的答案当然你会发送数组来解析它的值。因此,如果你的r返回值在一个像
var data={}
这样的数据对象中,并且你将返回值保存为
data={“address\u components”:[{…}]}
那么你就传递
数据[“address\u components”].getById..
当然您会发送数组来解析该值。因此,如果返回值位于数据对象(如
var data={}
中)并将返回值保存为
data={“address\u components”:[{…}}}
则传递
数据[“address\u components]”。getById..
var data = {
       ...
    },
    res = JSON.search( data, '//*[types="administrative_area_level_1" or types="locality"]' ),
    str = '';

    for (var i=0; i<res.length; i++) {
        str += res[i].long_name +'<br/>';
    }

    document.getElementById('output').innerHTML = str;