Lodash未定义,提供意想不到的结果

时间:2016-08-18 11:08:46

标签: javascript node.js underscore.js lodash

我在Node中使用了一个使用Lodash isndefined的三元组: sendUser.company = _.isUndefined(user.accounts[0].name) ? null : user.accounts[0].name; 但是当我尝试运行它时,我得到了 TypeError: Cannot read property 'name' of undefined。不知道我在这里缺少什么。

3 个答案:

答案 0 :(得分:2)

似乎帐号[0]也可能未定义 - 所以你也需要检查这个:

sendUser.company = ! user.accounts[0] || _.isUndefined(user.accounts[0].name) ? null : user.accounts[0].name;

答案 1 :(得分:2)

您确定user.accounts [0]是否已实际定义?

这看起来像是在试图检查是否' name'未定义。根据我对_isUndefined()的理解,它只会查找特定的值,因此无法检查.name属性的状态,因为user.accounts [0]本身是未定义的。

在检查.name属性之前,您也可以随时检查它。

答案 2 :(得分:0)

您可以使用_.get确保安全:

sendUser.company = _.get(user, 'accounts[0].name') || null;