首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript对象中的元素数

javascript对象中的元素数
EN

Stack Overflow用户
提问于 2009-06-06 00:05:23
回答 6查看 186.3K关注 0票数 121

有没有办法(从某个地方)获取javascript对象中元素的数量??(即恒定时间复杂度)。

我找不到检索该信息的属性或方法。到目前为止,我只能考虑对整个集合进行一次迭代,但这是线性时间。

奇怪的是,无法直接访问对象的大小,你不这样认为吗?

编辑:

我说的是Object对象(不是一般的对象):

代码语言:javascript
复制
var obj = new Object ;
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-06-05 16:35:04

尽管JS实现可能会在内部跟踪这样的值,但没有标准的方法来获取它。

在过去,Mozilla的Javascript变体公开了non-standard __count__,但它已经从1.8.5版本中删除了。

对于跨浏览器脚本,您必须显式地迭代属性并检查hasOwnProperty()

代码语言:javascript
复制
function countProperties(obj) {
    var count = 0;

    for(var prop in obj) {
        if(obj.hasOwnProperty(prop))
            ++count;
    }

    return count;
}

在支持ECMAScript 5的实现中,这也可以写成(Kudos to Avi Flax)

代码语言:javascript
复制
function countProperties(obj) {
    return Object.keys(obj).length;
}

请记住,您也会错过不可枚举的属性(例如数组的length)。

如果你正在使用像jQuery,Prototype,Mootools这样的框架,检查它们是否有自己的集合应用程序接口,这可能是比使用原生JS对象更好的解决问题的方法。

票数 183
EN

Stack Overflow用户

发布于 2013-03-15 17:03:09

要在任何与ES5兼容的环境中执行此操作

代码语言:javascript
复制
Object.keys(obj).length

(来自here的浏览器支持)

( Object.keys here上的文档,包括可添加到非ECMA5浏览器的方法)

票数 123
EN

Stack Overflow用户

发布于 2014-12-02 22:12:55

如果您已经在构建中使用jQuery,只需执行以下操作:

代码语言:javascript
复制
$(yourObject).length

它在对象上对我来说工作得很好,而且我已经有了jQuery作为依赖。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/956719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档