簡體   English   中英

計算對象的所有屬性

[英]Counting all properties of an object

我基本上需要對標簽“ 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)); 

您可能會遵循以下簡單方案:

  • 在根對象上調用Object.keys(...)
  • 對於每個鍵,請檢查該值是否是另一個對象。 如果是這樣,請遞歸。
  • 如果不是對象,請移至下一個鍵。
  • 對於每個鍵,增加一個計數器。

您可以使用少於10行代碼的小型函數來完成所有這些步驟。 嘗試一下,讓我知道您是否需要任何幫助! :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM