【问题标题】:Find length of empty attributes in nested JavaScript object查找嵌套 JavaScript 对象中空属性的长度
【发布时间】:2021-11-14 07:21:41
【问题描述】:

有没有办法计算嵌套对象中空属性的总数?

[{
  "name": test,
  "id" : "",
  "rating": {
    "title": "",
    "type": "book",
    "star": 2
  }
}]

我已经尝试过Object.keys(data).length,但显然这不会让我返回嵌套的。

任何建议都会有所帮助。

【问题讨论】:

标签: javascript arrays json object


【解决方案1】:

您可以使用Array.reduce() 创建一个递归函数来迭代所有值,如果一个值也是一个对象(或数组),则在嵌套对象上调用该函数:

const isNonNullObject = obj => typeof obj === 'object' && obj !== null

const countEmpty = obj =>
  Object.values(obj)
    .reduce((acc, v) => {     
      if(v === '') return acc + 1
      
      if(isNonNullObject(v)) return acc + countEmpty(v)
      
      return acc
    }, 0)


const arr = [{"name":"test","id":"","rating":{"title":"","type":"book","star":2}}]

const result = countEmpty(arr)

console.log(result)

【讨论】:

    【解决方案2】:

    使用递归reduce:

    let data = [{"name": "test","id" : "","rating": {"title": "","type": "book","star": 2}}];
    
    let count = data.reduce(function recur(sum, obj) {
        return sum + (obj === ""
                      || Object(obj) === obj 
                         && Object.values(obj).reduce(recur, 0));
    }, 0);
    
    console.log(count);

    【讨论】:

      猜你喜欢
      • 2021-06-10
      • 2016-08-29
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      • 2022-10-14
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      相关资源
      最近更新 更多