Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript计数对象_Javascript_Jquery_Count - Fatal编程技术网

javascript计数对象

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

我有一个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 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中看到过,非常有趣的行为!“我会试着深入挖掘。”巴法雷托说。左侧表达式总是通过设置键名,显然,不管它是单个变量还是使用成员运算符。