tut*_*eed 5 javascript lodash angular
我正在研究Angular项目,我不得不检查undefined或null使用Object或它的属性.通常我使用lodash _.isUndefined()参见下面的例子:
this.selectedItem.filter(i => {
if(_.isUndefined(i.id)) {
this.selectedItem.pop();
}
})
Run Code Online (Sandbox Code Playgroud)
我看不出任何问题.但在审查上述代码时,我与我的同事进行了讨论.他告诉我,如果在声明之前i获取undefined,if那么它将抛出异常.相反,他建议我总是检查i或i.id喜欢这个:
if(!!i && !!i.id) {
this.selectedItem.pop();
}
Run Code Online (Sandbox Code Playgroud)
我确信他试图说的不同于他undefined在上面的代码中检查的方式.但后来我想到了洛达什的目的是什么_.isUndefined?
谁能告诉我什么是最好或最干净的方法.因为对我!!i && !!i.id来说根本不可读.
提前谢谢了.
你可以_.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);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>Run Code Online (Sandbox Code Playgroud)
您还可以使用_.reject()并保存添加的需要!:
const selectedItem = [
undefined,
{},
{ id: 5 },
undefined,
{ id: 7 },
];
const result = _.reject(selectedItem, i => _.isNil(i && i.id));
console.log(result);Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>Run Code Online (Sandbox Code Playgroud)