javascript - 检查任何对象的 'undefined' 或 'null'

标签 javascript angular lodash

我正在从事 Angular 项目,我经常检查对象或其属性的 undefinednull。通常我使用 lodash _.isUndefined() 看下面的例子:

this.selectedItem.filter(i => {
    if(_.isUndefined(i.id)) {
      this.selectedItem.pop();
    }
})

我看不出有什么问题。但是我在审查上述代码时与我的同事进行了讨论。他告诉我,如果 iif 语句之前得到 undefined 那么它将抛出异常。相反,他建议我总是像这样检查 ii.id:

if(!!i && !!i.id) {
      this.selectedItem.pop();
}

我确信他想表达的意思与他在上面代码中检查 undefined 的方式不同。但后来我在想 lodash _.isUndefined 的目的是什么?

谁能告诉我最好或最干净的方法是什么。因为对我来说 !!i && !!i.id 根本不可读。

非常感谢。

最佳答案

您可以使用 _.isNil()检测 undefinednull。由于您使用的是 Array.filter() ,你想返回 !_.isNil() 的结果。由于 i 应该是一个对象,您可以使用 !_.isNil(i && i.id)

注意:您正在使用 Array.filter() 作为 Array.forEach() . Array.filter() 的回调应该返回一个 bool 值,过滤的结果是一个新的数组。

const selectedItem = [
  undefined,
  {},
  { id: 5 },
  undefined,
  { id: 7 },
];

const result = selectedItem.filter(i => !_.isNil(i?.id));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

您还可以使用 _.reject()并保存需要添加 !:

const selectedItem = [
  undefined,
  {},
  { id: 5 },
  undefined,
  { id: 7 },
];

const result = _.reject(selectedItem, i => _.isNil(i?.id));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

关于javascript - 检查任何对象的 'undefined' 或 'null',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52610019/

相关文章:

jquery 应用程序的 Javascript 模块模式

html - 如何调整复选框周围的点击区域?

angular - 未捕获( promise ): cordova_not_available in Ionic 2

javascript - 使用 JavaScript 和 lodash 汇总对象数组数据的最佳方法

javascript - 使用 optgroups 和 lodash 动态创建选项

javascript - 测试 - React 无状态组件,使用 sinon 监视组件方法

javascript - 插件编程nodeJs

angular - 通过项目的可观察属性将可观察数组过滤为另一个可观察数组(另一种类型)

javascript - 移动多维数组树的深层成员 - 使用 lodash 或下划线

JavaScript如何通过url传递变量?