2016-03-04 63 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 - 但代码看起来更优雅。