有没有一种方法可以检查lodash

时间:2020-01-07 12:42:46

标签: javascript user-interface ecmascript-6 lodash ecmascript-5

在下面的示例中考虑一个场景,我想检查对象x.a.bx.a.b.c的值,但是在尝试访问第二级对象时它抛出了一个异常( x.a.b)“未捕获的TypeError:无法读取未定义的属性” b”。

最终我想访问x.a.b.c,如何使用lodash检查值是否不是'undefined'或'null'? 有没有办法检查一系列值的对象?

var x = {}
!_.isUndefined(x); // true
!_.isUndefined(x.a); // false
!_.isUndefined(x.a.b); // Uncaught TypeError: Cannot read property 'b' of undefined

1 个答案:

答案 0 :(得分:3)

使用lodash的_.get()获取可疑路径。如果路径的某些部分不存在,它将返回undefined或默认值。

注意:如果您想捕获null,并且undefined使用_.isNil()而不是_.isUndefined()

var x = {}
console.log(!_.isUndefined(x)); // true
console.log(!_.isUndefined(_.get(x, 'a'))); // false
console.log(!_.isUndefined(_.get(x, 'a,b')));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

另一个选项是可选链接,它是第4阶段ES提案(不受浏览器支持,但可以通过Babel启用):

var x = {}
console.log(!_.isUndefined(x)); // true
console.log(!_.isUndefined(x?.a)); // false
console.log(!_.isUndefined(x?.a?.b));