2014-02-12 156 views
2

我在做一個返回JSON的ajax調用,其中包含3個位置的郵政編碼。檢查JSON中是否存在值

這些郵遞區號是:

value2.loc1_zip 
value2.loc2_zip 
value2.loc3_zip 

然後,在「搜索」的形式返回搜索半徑內的郵政編碼列表。它們是:

zipback.zip_codes 

每個郵政編碼是在這裏:

zipback.zip_codes.zip_code 

我無法弄清楚如何檢查是否value2.loc1_zipvalue2.loc2_zip,或value2.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); 
       } 

      }); 
     }); 
    } 
}); 
+1

什麼是'value2.loc1_zip'?它是一個字符串嗎?什麼是'zipback.zip_codes.zip_code'?我會猜想'zip_codes'會是一個數組,但從你使用它的方式來看,它看起來不像它。你可以包括你在你的問題中得到的原始JSON響應嗎? –

+0

'value2.loc1_zip'是一個字符串。 'zip_codes'是這樣一個數組:'{「zip_codes」:[{「zip_code」:「30324」,「distance」:4.484},{「zip_code」:「30376」,「distance」:4.298}]}'' –

+0

我已更新我的問題以包含實際的代碼以進行一些說明 –

回答

0

是否使用$ .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; 

}

希望這有助於!

0

我會用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; }); 

兩個陣列用於:一種含你有郵政編碼,另一個來自的形式的結果的zip碼導出。 some方法測試第一個數組中的一個郵政編碼是否等於(index!= -1)。