Javascript 检查JSON中是否存在值

Javascript 检查JSON中是否存在值,javascript,jquery,json,Javascript,Jquery,Json,我正在执行一个返回JSON的ajax调用,其中包括3个位置邮政编码 这些邮政编码是: value2.loc1_zip value2.loc2_zip value2.loc3_zip 然后,“搜索”表单返回搜索半径内的邮政编码列表。这些是: zipback.zip_codes 每个zipcode都在这里: zipback.zip_codes.zip_code 我不知道如何检查value2.loc1\u-zip、value2.loc2\u-zip或value2.loc3\u-zip是否在zip

我正在执行一个返回JSON的ajax调用,其中包括3个位置邮政编码

这些邮政编码是:

value2.loc1_zip
value2.loc2_zip
value2.loc3_zip
然后,“搜索”表单返回搜索半径内的邮政编码列表。这些是:

zipback.zip_codes
每个zipcode都在这里:

zipback.zip_codes.zip_code
我不知道如何检查
value2.loc1\u-zip
value2.loc2\u-zip
value2.loc3\u-zip
是否在
zipback.zip\u-code>列表中

我已经试过了,但没有成功:

var grabbed_zips = zipback.zip_codes;
if (grabbed_zips.hasOwnProperty(value2.loc2_zip)) {
    ...stuff...
}
以下是原始JSON:

{"counselor_posts":[{"id":"1","firstName":"John","lastName":"Doe","loc1_zip":"30309"},{"id":"3","firstName":"Jeff","lastName":"Kim","loc1_zip":"30315"}]}

{"zip_codes":[{"zip_code":"30324","distance":4.484},{"zip_code":"30376","distance":4.298}]}
下面是我正在使用的实际jquery:

$.ajax({
    type: "GET",
    url: '...url..here...',
    dataType: "json",
    success: function(zipback) {
        var grabbed_zips = zipback.zip_codes;
        $.getJSON('/scripts/get_counselor.php', function(data2) {
            $.each(data2.counselor_posts, function(name2,value2) {
                if (grabbed_zips.hasOwnProperty(value2.loc3_zip)) {
                    $(".counselor-search-results").append(cat_html2);
                }

            });
         });
    }
});

您是否使用$.parseJSON来实例化JSON对象?

这将有助于您管理对象。如果对象是列表,则:

var JSONZips = $.parseJSON('{"zips" : {"user1zip":94140, "user2zip": 94107}}');
JSONZips.zips.hasOwnProperty('user1zip');
这将成为现实

如果需要查找特定值,则:

function checkForValue(json, value) {
for (key in json) {
    if (typeof (json[key]) === "object") {
        return checkForValue(json[key], value);
    } else if (json[key] === value) {
        return true;
    }
}
return false;
}


希望这有帮助

我将使用
map
函数提取表单结果中包含的邮政编码,然后测试其中是否包含
您拥有的部分邮政编码

例如:

var zip1 = "30321", zip2 = "00000", zip3 = "01010"; //zip codes you want to test
var grabbed_zips = {"zip_codes":[{"zip_code":"30324","distance":4.484},{"zip_code":"30376","distan‌​ce":4.298}]}; //search result

//flattened array containing the zip codes in the search result
var zipCodes = grabbed_zips.zip_codes.map(function(zip){ return zip.zip_code; });

//The test you are looking for, either true or false
var someMatch = [zip1, zip2, zip3].some(function(curZip){ return zipCodes.indexOf(curZip) != -1; });
使用两个数组:一个包含您拥有的邮政编码,另一个派生自表单结果中的邮政编码。
some
方法测试第一个数组中的一个邮政编码在第二个数组中是否相等(索引!=-1)

什么是
value2.loc1\u-zip
?它是一根绳子吗?什么是zipback.zip_code.zip_code
?我猜
zip\u code
应该是一个数组,但从您使用它的方式来看,它看起来不像。您能在问题中包含您得到的原始JSON响应吗?
value2.loc1\u zip
是一个字符串
zip_codes
是这样的数组:
{“zip_codes”:[{“zip_code”:“30324”,“distance”:4.484},{“zip_code”:“30376”,“distance”:4.298}]}
我已经更新了我的问题,将实际的代码包含进来,以作一些澄清