簡體   English   中英

檢查JSON中是否存在值

[英]Check if value exists in JSON

我正在做一個返回JSON的ajax調用,其中包括3個位置的郵政編碼。

這些郵政編碼是:

value2.loc1_zip
value2.loc2_zip
value2.loc3_zip

然后,“搜索”表單返回搜索半徑內的郵政編碼列表。 這些是:

zipback.zip_codes

每個郵政編碼都在這里:

zipback.zip_codes.zip_code

我無法弄清楚如何檢查value2.loc1_zipvalue2.loc2_zipvalue2.loc3_zip是否在zipback.zip_codes列表中

我已經嘗試過了,但是沒有用:

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對象? $ .parseJSON

這將有助於您管理對象。 如果對象是列表,則:

var JSONZips = $.parseJSON('{"zips" : {"user1zip":94140, "user2zip": 94107}}');
JSONZips.zips.hasOwnProperty('user1zip');

這將返回true。

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

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函數提取表單結果中包含的郵​​政編碼,然后測試其中是否包含some郵政編碼。

例如:

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方法測試第二個數組中第一個數組中的郵政編碼是否相等(index!= -1)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM