作者:小鱼儿太疯癫 | 来源:互联网 | 2022-12-03 12:13
我正在研究Angular项目,我不得不检查undefined
或null
使用Object或它的属性.通常我使用lodash _.isUndefined()
参见下面的例子:
this.selectedItem.filter(i => {
if(_.isUndefined(i.id)) {
this.selectedItem.pop();
}
})
我看不出任何问题.但在审查上述代码时,我与我的同事进行了讨论.他告诉我,如果在声明之前i
获取undefined
,if
那么它将抛出异常.相反,他建议我总是检查i
或i.id
喜欢这个:
if(!!i && !!i.id) {
this.selectedItem.pop();
}
我确信他试图说的不同于他undefined
在上面的代码中检查的方式.但后来我想到了洛达什的目的是什么_.isUndefined
?
谁能告诉我什么是最好或最干净的方法.因为对我!!i && !!i.id
来说根本不可读.
提前谢谢了.
1> Ori Drori..:
你可以_.isNil()
用来检测undefined
或null
.既然你正在使用Array.filter()
,你想要返回结果!_.isNil()
.既然i
应该是一个对象,你可以使用!_.isNil(i && i.id)
.
注意:您使用的Array.filter()
是Array.forEach()
.回调Array.filter()
应返回一个布尔值,过滤器的结果是一个新数组.
const selectedItem = [
undefined,
{},
{ id: 5 },
undefined,
{ id: 7 },
];
const result = selectedItem.filter(i => !_.isNil(i && i.id));
console.log(result);