计算对象的所有属性

时间:2018-01-29 19:11:53

标签: javascript object recursion

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

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

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

2 个答案:

答案 0 :(得分:1)

您确实可以使用递归函数。方法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));header('Location: http://example.co.uk/quiz/dashboard.php/'.$json); 也很有用:



header('Location: http://example.co.uk/quiz/dashboard.php?data='.$json);




答案 1 :(得分:0)

以下是您可能遵循的简单方案:

  • 在根对象上调用Object.keys(...)
  • 对于每个键,检查该值是否是另一个对象。如果是,请递归。
  • 如果它不是对象,请转到下一个键。
  • 对于每个键,递增一个计数器。

您可以在少于10行代码的小型函数中执行所有这些步骤。尝试一下,如果您需要任何帮助,请告诉我! :)