javascript - 计算对象的所有属性

标签 javascript object recursion

我基本上需要计算标签“property1”和“property2”,这样结果就是 4。 该对象看起来有点像这样:

parent: {
  child: {
    child2: {
      child3: { property1: '', property2: '' }
    }
  },
  2child: {
    2child2: {
      2child3: { property1: '', property2: '' }
    }
  }
}

我需要计算指定的属性,但找不到方法。该对象可以有许多这样的子对象,这些子对象都有自己的子对象,并且需要对所有指定的属性进行计数。 我的第一个猜测是需要递归。

最佳答案

您确实可以使用递归函数。 Object.keysObject.values 方法也很有用:

function propCount(obj) {
    return Object(obj) !== obj ? 0
         : Object.values(obj).map(propCount)
                 .reduce( (a,b) => a+b, Object.keys(obj).length );
}

var obj = {parent: {child: {child2: {child3: { property1: '', property2: '' }}},"2child": {"2child2": {"2child3": { property1: '', property2: '' }}}}};

console.log(propCount(obj));

关于javascript - 计算对象的所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48508362/

相关文章:

javascript - jQuery - API 选项作为函数?

javascript - npm 错误在 node-sass@4.9.0 安装脚本失败

javascript - 使用 Underscore/Lodash 分组和求和

php - PHP 中的递归生成器

recursion - 为什么此 F# 代码不是尾递归的?

javascript - 添加带有渐变图像的渐变文本 => JQuery

javascript - Passport 用户不是函数

Javascript HashTable 使用对象键

java - 当我从另一个类调用对象时出现错误,即 "cannot find symbol"

python - 仅使用加法和减法求两个数的乘积?