2013-10-01 69 views
3

我的問題很簡短。JavaScript對象的計數屬性

我需要算JSON對象的屬性,例如

obj={ 
     name:'Jhon', 
     age:25 
} 

此方法必須返回2,一個用於「名」和ohter爲「年齡」。 我嘗試使用。

obj.count(); 
obj.length(); 

但沒有......

的,我在網上找到的所有的解決方案是爲數組的元素計數。

謝謝大家!

+2

這不是JSON。這就是JavaScript。 (具體來說,它是一個JavaScript對象初始化器。)[JSON](http://json.org)是一種非代碼的文本數據格式。而在JavaScript中,他們被稱爲「屬性」,而不是「屬性」(不是批評,「屬性」是一個通用術語 - 只是讓你知道準確的術語是什麼)。 –

回答

11

嘗試Object.keys,有沒有內置的length Javascript對象的屬性或方法。

var propCount = Object.keys(obj).length; 

注意這裏是你需要在源代碼中添加補充支持一些老的瀏覽器(例如:IE < 9)一個墊片。閱讀從MDN

+0

非常簡單,非常感謝! – Federico

+2

我建議不要觸摸Object.prototype,你將會影響* everything * else帶有不可預知的結果。 – LexLythius

+0

@LexLythius是的,你是對的,它是不可取的擴展內置的prots – PSL

3

的文檔鏈接試試這樣:

Object.keys(obj).length 
+0

這項工作,坦克! – Federico

+0

爲你+1,可能只有幾秒鐘.. – PSL

+0

+1也適合你:)僅僅2秒鐘後:D –

2

只需添加到Object.keys(obj).length解決方案,下面是不支持Object.keys瀏覽器中填充工具。

Object.keys = Object.keys || function(o,k,r){ 
    r=[]; 
    for(k in o){ 
     r.hasOwnProperty.call(o,k) && r.push(k); 
    } 
    return r; 
} 
+0

你需要把'return r'放在for循環之外。 – PSL

+0

在這裏你去+1 ... :) – PSL