我有一个JavaScript对象。是否有一种内置或公认的最佳实践方法来获取此对象的长度?

const myObject = new Object();
myObject["firstname"] = "Gareth";
myObject["lastname"] = "Simpson";
myObject["age"] = 21;

当前回答

如果需要公开其大小的关联数据结构,最好使用映射而不是对象。

const myMap=新映射();myMap.set(“firstname”,“Gareth”);myMap.set(“姓氏”,“辛普森”);myMap.set(“年龄”,21);console.log(myMap.size);//3.

其他回答

var myObject=新对象();myObject[“firstname”]=“Gareth”;myObject[“lastname”]=“Simpson”;myObject[“age”]=21;var size=JSON.stringify(myObject).length;document.write(大小);

JSON.stringify(myObject)

这是最跨浏览器的解决方案。

这比接受的答案更好,因为它使用本机Object.keys(如果存在)。因此,它是所有现代浏览器中速度最快的。

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

Object.keys(obj).length;

最简单的方法如下:

Object.keys(myobject).length

其中myobject是您想要的长度的对象。

我同样需要计算通过websocket接收的对象所使用的带宽。对我来说,只要找到Stringified对象的长度就足够了。

websocket.on('message', data => {
    dataPerSecond += JSON.stringify(data).length;
}

如果需要公开其大小的关联数据结构,最好使用映射而不是对象。

const myMap=新映射();myMap.set(“firstname”,“Gareth”);myMap.set(“姓氏”,“辛普森”);myMap.set(“年龄”,21);console.log(myMap.size);//3.