如何在 JavaScript 中有效地计算对象的键/属性数

2022-08-29 21:55:14

计算对象的键/属性数量的最快方法是什么?是否可以在不迭代对象的情况下执行此操作?即,不做:

var count = 0;
for (k in myobj) if (myobj.hasOwnProperty(k)) ++count;

(Firefox 确实提供了一个魔法属性,但它在版本 4 左右被删除了。__count__


答案 1

要在任何ES5 兼容的环境中执行此操作,例如 Node.js、Chrome、Internet Explorer 9+、Firefox 4+ 或 Safari 5+:请执行以下操作:

Object.keys(obj).length

答案 2

您可以使用以下代码:

if (!Object.keys) {
    Object.keys = function (obj) {
        var keys = [],
            k;
        for (k in obj) {
            if (Object.prototype.hasOwnProperty.call(obj, k)) {
                keys.push(k);
            }
        }
        return keys;
    };
}

然后,您也可以在较旧的浏览器中使用它:

var len = Object.keys(obj).length;