如何获取JavaScript对象中的字段数?

vav*_*ava 12 javascript

我正在尝试使用JavaScript对象作为关联数组,一切都很顺利,直到我需要获得存储在其中的条目数.最简单,最优雅的方法是什么?我能想到的只是运行for each循环或jQuery $.each函数,看看它会做多少迭代,但这看起来像是一件非常糟糕的事情.

Jam*_*mes 30

旧的Firefox支持该__count__属性.较新的环境支持ES5 Object.keys.对于较旧的环境,我们必须回退到迭代对象并手动计数(呃!):

function count(obj) {

    if (obj.__count__ !== undefined) { // Old FF
        return obj.__count__;
    }

    if (Object.keys) { // ES5 
        return Object.keys(obj).length;
    }

    // Everything else:

    var c = 0, p;
    for (p in obj) {
        if (obj.hasOwnProperty(p)) {
            c += 1;
        }
    }

    return c;

}
Run Code Online (Sandbox Code Playgroud)

  • 哦,天啊,O(n)获取地图中的条目数......好吧,这很糟糕.:/ (5认同)

小智 29

这对我有用:

Object.keys(obj).length
Run Code Online (Sandbox Code Playgroud)