1
2157
在任何ES5兼容环境中执行此操作,例如 Node ,Chrome,IE 9+,FF 4+,或Safari 5+:
|
2
146
您可以使用此代码:
然后您也可以在旧浏览器中使用它:
|
3
132
如果您正在使用
Underscore.js
你可以使用
_.size
(谢谢@douwe):
或者您也可以使用
_.keys
这对一些人来说可能更清楚:
我强烈推荐使用下划线,它是一个用于执行许多基本操作的紧密库。只要可能,它们就会匹配ECMA5并遵从本机实现。 否则我支持@avi的答案。我编辑了它以添加到MDC文档的链接,其中包括可以添加到非ECMA5浏览器的keys()方法。 |
4
68
标准对象实现(
ES5.1 Object Internal Properties and Methods
)不需要
因此,以下是最常用的替代方案: 1。ecmascript的object.keys()。
2。基于库的解决方案
本主题其他地方的许多基于库的示例都是在其库上下文中有用的习语。但是,从性能的角度来看,与完美的无库代码相比,没有什么可获得的,因为所有这些库方法实际上都封装了for循环或es5
三。优化for循环
这个
最慢部分
对于这样的for循环,通常是
否则,您的代码可以通过
另一个想法依赖于缓存
在给定的环境中,这是否更快是一个基准测试问题。无论如何,预期的性能增益非常有限。 |
5
23
如果您实际遇到性能问题,我建议使用一个函数来包装向对象添加/从对象中删除属性的调用,该函数还可以增加/减少一个适当命名的(大小?)。财产。
您只需要计算一次初始属性数量,然后从那里继续。如果没有实际的性能问题,就不用麻烦了。只需将这段代码包装在一个函数中
|
6
15
我不知道有什么方法可以做到这一点,但是为了将迭代次数保持在最小,您可以尝试检查
这样任何浏览器都支持
任何时候只要你提到MYOBJ。
|
7
15
如阿维亚麻所述 https://stackoverflow.com/a/4889658/1047014
将对对象上的所有可枚举属性执行此技巧,但也包括不可枚举属性,您可以使用
如上所述
here
这与浏览器支持相同
但是,在大多数情况下,您可能不希望在这些类型的操作中包含非数字项,但了解它们之间的区别总是很好的;) |
8
12
迭代avi-flax-answer-object.keys(obj).length对于没有绑定函数的对象是正确的 例子:
对战
避免这种情况的步骤:
同样,我在示例中使用了nodejs中的\或下划线模块 文档可在此处找到 http://underscorejs.org/ 以及它在Github上的来源和各种其他信息 最后是一个lodash实现 https://lodash.com/docs#size
|
9
8
对于项目中包含underline.js的用户,可以执行以下操作:
或功能风格:
|
10
6
来自: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
您可以将其添加到所有对象中:
或单个对象:
例子:
这样,它就不会在循环中显示为..
输出:
注意:它不适用于<IE9浏览器。 |
11
5
我解决这个问题的方法是建立我自己的基本列表实现,它记录对象中存储了多少项。很简单。像这样:
|
12
4
|
13
3
对于项目中有ExtJS4的用户,可以执行以下操作:
这样做的好处是,它可以在所有与ext兼容的浏览器(包括ie6-ie8)上工作,但是,我相信运行时间并不比o(n)好,就像其他建议的解决方案一样。 |
14
1
如果上面的jquery不起作用,请尝试
|
15
0
我认为这是不可能的(至少在没有使用内部结构的情况下是不可能的)。我不认为通过优化这一点你会得到很多。 |
16
0
我试图使它对所有这样的对象都可用:
|
17
0
你可以使用
|
18
0
您还可以使用
|
19
-1
谷歌关闭有一个很好的功能…goog.object.getcount(对象) |
20
-1
你可以使用:
|
324 · 是否可以在某个数字下查找字典值的键? 2 年前 |
dg99 · JSON密钥全局绑定 6 年前 |
Kaira Asia · Python在中编辑/重命名键名。json 6 年前 |
Jonathan Mee · 多重映射的每个元素是否同时包含键和值? 6 年前 |
Levi · 如何使用jq将多个输出对象组合成单个对象 6 年前 |
kales · PHP:数组中作为键的值之一 6 年前 |
Danielius · RC-6密文与非0向量不匹配 6 年前 |
LucSpan · 当值为列表且项不唯一时,交换字典键和值 6 年前 |