2016-11-22 28 views
0

我收到來自服務器這個JSON,我需要的,如果我這樣做,以檢查其中是否包含關鍵read.nores如何檢查對象是否有特定的鍵沒有的try/catch

enter image description here

if (data[0]["read.nores"]) { 
    return; 
} 

它會崩潰,因爲它不包含該密鑰。

如何在沒有try/catch方法的情況下檢查鍵是否存在,如.has(「read.nores」)?

+1

它包含了關鍵......即使它沒有,它不會崩潰,它只是得到'undefined'值(是虛假的,所以它不會返回) – Quentin

+0

你試過'indexOf()'? – alok

+1

它只會崩潰,如果'數據[0]'不可用,所以你需要檢查之前,像'如果(數據[0] &&數據[0] [「read.nores」])' – Eddi

回答

1

讀取一個未定義的關鍵安全生產undefined,但是從undefined讀一鍵將拋出,所以問題會具體爲data[0]不存在,而不是data[0]["read.nores"]不存在。

要檢查的是,將其更改爲:

if (data[0] && data[0]["read.nores"]) { 
    return; 
} 
+1

這不檢查對象是否包含關鍵字'read.nores',因爲它的值也可能是錯誤的值。 – Lain

+0

當然,但是OP的問題在於他的代碼被拋出,而不是被忽略的虛假值。 – Jesse

+0

問題是:「如果沒有try/catch方法,我該如何檢查密鑰是否存在」。我沒有倒下,因爲它可能夠用了,但它並沒有回答這個問題。就這些。 – Lain

1

它不會崩潰。 如果您檢查對象的任何屬性,並且它未在對象中定義,則默認爲undefined。所以你的條件會很好地工作。

+0

檢查'json是否包含密鑰'的條件將不起作用,因爲即使密鑰確實存在,它也會在falsey值上驗證爲false。 – Lain

相關問題