Javascript - 检查Amazon Objects以查看是否已定义

时间:2016-03-04 21:06:18

标签: javascript amazon

如果部分Amazon产品丢失,我会收到错误消息。例如,我可以做这个检查:

typeof success.data[i].OfferSummary[0].LowestNewPrice[0].Amount !== "undefined"

但如果未定义OfferSummary,则会引发错误。我是否需要检查数据下的每个对象?有更简单的方法吗?

我正在考虑尝试...捕获并捕获错误,但我确定有人在此之前遇到过这种情况。

2 个答案:

答案 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 - 检查,但代码看起来更优雅。