javascript计数对象
我有一个javascript对象,它包含6个对象,可能包含其他数组或对象。使用javascript或jquery,如何快速计算这6个顶级对象的数量javascript计数对象,javascript,jquery,count,Javascript,Jquery,Count,我有一个javascript对象,它包含6个对象,可能包含其他数组或对象。使用javascript或jquery,如何快速计算这6个顶级对象的数量 1 Object { salesman="1714, name="Lucien Layton", events={...}} 2 Object { salesman="1715", name="Hugo Hayne", events={...}} 3 Object { salesman="17165", name="Jonas Jessi
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={...}}
你可以这样做
var objectsLength = 0;
for ({}[++objectsLength] in objects) {}
它有点时髦,但也很酷。尽管如此,由于它的不寻常,我还是建议使用更常见的方法
var objectsLength = 0;
for (var prop in objects) {
objectsLength++;
}
如果您不确定您的环境,并且认为它们可能是原型链上的可移植属性,请使用hasOwnProperty()
(或者使用Object.create(null)
)创建您的对象)
如果浏览器支持对您有利
var objectsLength = Object.keys(objects).length;
.如果您不需要对旧浏览器的支持,您可以使用
Object.keys(yourObj).length
,否则一个简单的for..in
循环应该是一个非常有趣的解决方案。请记住,如果出于某种原因必须再次迭代属性,则会枚举数字键。更有趣的是:在循环中,{foo:1,bar:2,baz:3}之后,像{foo:1,bar:2,baz:3}
这样的对象将变成{1:“foo”,2:“bar”,3:“baz”,foo:1,bar:2,baz:3}
-但该代码中没有说明新数字键的值应为原始键!每种类型的物体都会发生这种情况,这很奇怪!例如,一个对象{a:“b”,c:“d”}
变成{1:“a”,2:“c”,a:“b”,c:“d”}
。原因似乎是:在中,对于obj中的prop
,prop
分配了键名。所以objects[++objectsLength]
在这个位置实际上意味着objects[++objectsLength]=keyname
。我以前从未在js中看到过,非常有趣的行为!“我会试着深入挖掘。”巴法雷托说。左侧表达式总是通过设置键名,显然,不管它是单个变量还是使用成员运算符。