2016-03-04 65 views
2

如果部分亞馬遜產品丟失,則會出現錯誤。例如,我可以執行此項檢查:Javascript - 檢查亞馬遜對象以查看是否定義

​​

但如果OfferSummary未定義,則會引發錯誤。我需要檢查數據下的每個對象嗎?有更容易的方法嗎?

我在想做一個嘗試......捕捉並捕獲錯誤,但我確信有人遇到過這個問題。

回答

1

是的,您需要檢查每一步或將檢查包裝在try catch塊中。

目前您正嘗試訪問未定義的屬性,該屬性不存在。

if (success.data[i] && success.data[i].OfferSummary[0] && 
    success.data[i].OfferSummary[0].LowestNewPrice[0] && 
    success.data[i].OfferSummary[0].LowestNewPrice[0].Amount !== undefined) {} 

//OR 

var amount = null; 
try { 
    amount = success.data[i].OfferSummary[0].LowestNewPrice[0].Amount; 
} catch(err) {} 
if (amount !== undefined){} 
0

如果您使用lodash你可以使用函數_.get

var amount = _.get(success, 'data[' + i + '].OfferSummary[0].LowestNewPrice[0].Amount', 0); 

第三個參數是將在這條道路不便的情況下返回沒有定義的默認值。

其實在引擎蓋下它只是一組if - 但代碼看起來更優雅。