【问题标题】:Cannot read property 'cnt' of undefined [duplicate]无法读取未定义的属性“cnt”[重复]
【发布时间】:2019-03-10 18:46:26
【问题描述】:

这是我的代码 sn-p

pastActions = res['data']['list']['names']['blk'].cnt

但是我看到下面的错误

its throws error as Cannot read property 'cnt' of undefined

这是因为 cnt 的父级未定义,当这些属性 datalistnamesblk 未定义时,它甚至可能会失败。

我已将其替换如下

res['data'] && res['data']['list] && res['data']['list']['names'] && res['data']['list']['names']['blk'] && res['data']['list']['names']['blk'].cnt ? res['data']['list']['names']['blk'].cnt : '';

它可以工作,但是有没有优化的方法来检查它?

【问题讨论】:

  • 嗯,你可以改用. 表示法,这样每关可以节省 3 个字符
  • 嗨@HH837,你可以使用lodash _.get函数。当对象中的任何属性未定义时,您可以选择返回默认值。在这里查看:lodash.com/docs/4.17.10#getGets the value at path of object. If the resolved value is undefined, the defaultValue is returned in its place.
  • try { pastActions = res.data.list.names.blk.cnt; } catch(e) { }

标签: javascript node.js angular ecmascript-6 ecmascript-5


【解决方案1】:

你可以使用 lodash _.get 函数。当对象中的任何属性未定义时,您可以选择返回默认值。 在这里查看:lodash.com/docs/4.17.10#get

【讨论】:

    猜你喜欢
    • 2017-06-05
    • 2017-12-02
    • 2016-09-14
    • 2021-03-18
    • 2018-11-18
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    相关资源
    最近更新 更多