有没有办法(从某个地方)获取javascript对象中元素的数量??(即恒定时间复杂度)。
我找不到检索该信息的属性或方法。到目前为止,我只能考虑对整个集合进行一次迭代,但这是线性时间。
奇怪的是,无法直接访问对象的大小,你不这样认为吗?
编辑:
我说的是Object
对象(不是一般的对象):
var obj = new Object ;
发布于 2009-06-05 16:35:04
尽管JS实现可能会在内部跟踪这样的值,但没有标准的方法来获取它。
在过去,Mozilla的Javascript变体公开了non-standard __count__
,但它已经从1.8.5版本中删除了。
对于跨浏览器脚本,您必须显式地迭代属性并检查hasOwnProperty()
function countProperties(obj) {
var count = 0;
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
++count;
}
return count;
}
在支持ECMAScript 5的实现中,这也可以写成(Kudos to Avi Flax)
function countProperties(obj) {
return Object.keys(obj).length;
}
请记住,您也会错过不可枚举的属性(例如数组的length
)。
如果你正在使用像jQuery,Prototype,Mootools这样的框架,检查它们是否有自己的集合应用程序接口,这可能是比使用原生JS对象更好的解决问题的方法。
发布于 2013-03-15 17:03:09
发布于 2014-12-02 22:12:55
如果您已经在构建中使用jQuery,只需执行以下操作:
$(yourObject).length
它在对象上对我来说工作得很好,而且我已经有了jQuery作为依赖。
https://stackoverflow.com/questions/956719
复制相似问题