2013-07-28 62 views
3

我有一個JavaScript對象,其中包含6個可能包含其他數組或對象的對象。使用JavaScript或jQuery的,我怎麼能快速計算這6個最高級別的對象數量javascript - 計數對象

1 Object { salesman="1714, name="Lucien Layton", events={...}} 
2 Object { salesman="1715", name="Hugo Hayne", events={...}} 
3 Object { salesman="17165", name="Jonas Jessie", events={...}} 
4 Object { salesman="1718", name="Ezequiel Ebner", events={...}} 
5 Object { salesman="1721", name="Randolph Rodda", events={...}} 
6 Object { salesman="1722", name="Edwin Earles", events={...}} 
+0

如果你不需要,你可以使用舊的瀏覽器的支持'Object.keys(yourObj).length',否則簡單的'for..in'循環應該足夠 –

回答

5

你可以這樣做......

var objectsLength = 0; 
for ({}[++objectsLength] in objects) {} 

jsFiddle

這是一種時髦,但也很酷。不過,由於它的異樣,我只是建議比較常見的方法......

var objectsLength = 0; 
for (var prop in objects) { 
    objectsLength++; 
} 

jsFiddle

如果您不確定自己的環境,並認爲它們可能是原型鏈上的可迭代屬性,請使用hasOwnProperty()(或使用Object.create(null)創建對象)。

如果瀏覽器的支持是對你有利...

var objectsLength = Object.keys(objects).length; 

jsFiddle

+1

有趣的解決方案。請記住,如果由於某種原因必須重新迭代屬性,數字鍵將被枚舉。 – bfavaretto

+1

更有趣的是:在'for..in'循環之後,像{{foo:1,bar:2,baz:3}}這樣的對象變成了{{1:「foo」,2:「bar」,3: 「baz」,foo:1,bar:2,baz:3}' - 但該代碼沒有說新數字鍵的值應該是原始鍵! – bfavaretto

+0

它發生在每種類型的物體上,這很奇怪!例如,對象'{a:「b」,c:「d」}'變爲'{1:「a」,2:「c」,a:「b」,c:「d」}'。 –