首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何检查对象中的每个属性是否都为空

如何检查对象中的每个属性是否都为空
EN

Stack Overflow用户
提问于 2018-05-31 16:29:29
回答 5查看 28.3K关注 0票数 9

我有一个对象,有时候它是空的,就像{}一样,有时候它的属性会被设置为null。

代码语言:javascript
复制
{
  property1: null,
  property2: null
}

如何确定此对象中的所有属性是否都为空?如果它们都为空,则返回false。

目前,我正在使用lodash检查第一种情况,即对象只是{}为空。但我还需要介绍第二种情况。

代码语言:javascript
复制
if (isEmpty(this.report.device)) {
  return false;
}
return true;
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-05-31 16:32:25

您可以使用Object.values将对象转换为数组,并使用every检查每个元素。使用!对该值求反。

代码语言:javascript
复制
let report = {
  property1: null,
  property2: null,
}

let result = !Object.values(report).every(o => o === null);

console.log(result);

例如,某些元素不是null

代码语言:javascript
复制
let report = {
  property1: null,
  property2: 1,
}

let result = !Object.values(report).every(o => o === null);

console.log(result);

文档:Object.values()every()

票数 23
EN

Stack Overflow用户

发布于 2018-05-31 16:32:18

您可以使用Object.keys()方法,这将以数组的形式返回该对象中的所有键。这使得执行Object.keys(this.report.device).filter(key => !this.report.device[key] === null)成为可能,它将返回非空键的数量,如果这是0,那么您就得到了答案。

本质上,依赖于null属性并不是一种好的方法,最好将这些属性设为undefined,或者仅仅从你的API中返回一个平面对象。

希望这能帮上忙。

票数 4
EN

Stack Overflow用户

发布于 2018-05-31 16:53:58

使用.some()代替.every()的方法

代码语言:javascript
复制
function isEmpty (obj) {
    return !Object.values(obj).some(element => element !== null);
}

如果任何obj属性不是null,此函数(命名为isEmpty以匹配问题中给出的名称)将返回false,否则将返回true

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50619910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档