如果部分Amazon产品丢失,我会收到错误消息。例如,我可以做这个检查:
typeof success.data[i].OfferSummary[0].LowestNewPrice[0].Amount !== "undefined"
但如果未定义OfferSummary,则会引发错误。我是否需要检查数据下的每个对象?有更简单的方法吗?
我正在考虑尝试...捕获并捕获错误,但我确定有人在此之前遇到过这种情况。
答案 0 :(得分: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){}
答案 1 :(得分:0)
如果您使用lodash
,则可以使用函数_.get:
var amount = _.get(success, 'data[' + i + '].OfferSummary[0].LowestNewPrice[0].Amount', 0);
第3个参数是默认值,如果未定义此路径中的smth,将返回该参数。
实际上,它只是一组if
- 检查,但代码看起来更优雅。