【问题标题】:How to check if every properties in an object are null如何检查对象中的每个属性是否为空
【发布时间】:2018-05-31 08:29:28
【问题描述】:

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

{
  property1: null,
  property2: null
}

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

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

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

【问题讨论】:

    标签: javascript lodash


    【解决方案1】:

    您可以使用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()

    【讨论】:

    • 如果对象是嵌套的怎么办?
    【解决方案2】:

    使用.some() 而不是.every() 的方法:

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

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

    【讨论】:

      【解决方案3】:

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

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

      希望这会有所帮助。

      【讨论】:

        【解决方案4】:

        这很简单,可以用一个班轮完成!

        function IsAllPropertiesNull(obj) {
         return Object.values(obj).every(v=>v == null);
        }
        
        a = {'a': null, 'b':null};
        var isAllNull = IsAllPropertiesNull(a) 
        // isAllNull = true
        

        解释—— 获取对象的所有值 - 迭代它们并检查是否为空

        祝你好运!

        【讨论】:

          【解决方案5】:

          使用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");
          } 

          【讨论】:

            猜你喜欢
            • 2021-12-21
            • 2014-08-22
            • 1970-01-01
            • 1970-01-01
            • 2014-05-06
            • 2020-09-21
            • 1970-01-01
            • 1970-01-01
            • 2017-07-27
            相关资源
            最近更新 更多