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

Posted

技术标签:

【中文标题】Javascript - 检查 Amazon Objects 以查看是不是已定义【英文标题】:Javascript - Check Amazon Objects to see if definedJavascript - 检查 Amazon Objects 以查看是否已定义 【发布时间】:2016-06-18 18:38:55 【问题描述】:

如果缺少部分亚马逊产品,我会收到错误消息。例如,我可以做这个检查:

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

但如果未定义 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)

【讨论】:

【参考方案2】:

如果你使用lodash,你可以使用函数_.get:

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

第三个参数是默认值,如果该路径中的smth没有定义,则返回。

实际上,在底层它只是一组if-checks,但代码看起来更优雅。

【讨论】:

以上是关于Javascript - 检查 Amazon Objects 以查看是不是已定义的主要内容,如果未能解决你的问题,请参考以下文章

如何链接两个 JavaScript 对象?

如何更新现有Amazon S3文件的元数据?

PHP检查对象或类中是不是存在属性

FC 与 FB 与 OB 的区别,时间标记冲突与一致性检查 有详细的步骤

自定义 Amazon ELB 的运行状况检查 URL

在上传 Amazon S3 之前检查病毒? [关闭]