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

时间:2018-05-31 08:29:29

标签: javascript lodash

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

{
  property1: null,
  property2: null
}

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

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

if (isEmpty(this.report.device)) {
  return false;
}
return true;

5 个答案:

答案 0 :(得分:6)

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



let report = {
  property1: null,
  property2: null,
}

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

console.log(result);




有些元素不是null

的示例



let report = {
  property1: null,
  property2: 1,
}

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

console.log(result);




文档:Object.values()every()

答案 1 :(得分:2)

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

本质上依赖null属性并不是一个好方法,最好是制作这些属性undefined或只是从API中返回一个平面对象。

希望这会有所帮助。

答案 2 :(得分:1)

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

function isEmpty (obj) {
    return !Object.values(obj).some(element => element !== null);
}

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

答案 3 :(得分:0)

使用Object.entriesArray.every



let obj = {
   property1: null,
   property2: null,
};

function isEmpty(o) {
  return Object.entries(o).every(([k,v]) => v === null);
}

if(isEmpty(obj)) {
   console.log("Object is empty");
} 




答案 4 :(得分:0)

这很简单,可以用一个衬垫完成!

function IsAllPropertiesNull(obj) {
 return Object.values(obj).every(v=>v == null);
}

a = {'a': null, 'b':null};
var isAllNull = IsAllPropertiesNull(a) 
// isAllNull = true

解释 - 获取对象的所有值 - 迭代它们并检查null

祝你好运!