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

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

上一篇 下一篇

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

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

分割线

网友回答:

如果你知道你不必担心检查,你可以这样使用 Object.keys() 方法:hasOwnProperty

Object.keys(myArray).length

分割线

网友回答:

更新的答案

以下是截至 2016 年的更新以及 ES5 及更高版本的广泛部署。对于IE9+和所有其他支持ES5+的现代浏览器,您可以使用上述代码:Object.keys()

var size = Object.keys(myObj).length;

这不必修改任何现有原型,因为现在是内置的。Object.keys()

编辑:对象可以具有无法通过 Object.key 方法返回的符号属性。因此,如果不提及它们,答案将是不完整的。

符号类型已添加到语言中,以便为对象属性创建唯一标识符。符号类型的主要优点是防止覆盖。

Object.keys或者不适用于符号属性。要返回它们,您需要使用 .Object.getOwnPropertyNamesObject.getOwnPropertySymbols

var person = {
  [Symbol('name')]: 'John Doe',
  [Symbol('age')]: 33,
  "occupation": "Programmer"
};

const propOwn = Object.getOwnPropertyNames(person);
console.log(propOwn.length); // 1

let propSymb = Object.getOwnPropertySymbols(person);
console.log(propSymb.length); // 2

较早的答案

最可靠的答案(即捕获您尝试执行的操作的意图,同时导致最少的错误)是:

Object.size = function(obj) {
  var size = 0,
    key;
  for (key in obj) {
    if (obj.hasOwnProperty(key)) size++;
  }
  return size;
};

// Get the size of an object
const myObj = {}
var size = Object.size(myObj);

JavaScript 中有一种约定,即您不会向 Object.prototype 添加内容,因为它可以破坏各种库中的枚举。不过,向 Object 添加方法通常是安全的。


分割线

网友回答:

更新:如果您使用的是下划线.js(推荐,它是轻量级的!),那么您可以直接执行

_.size({one : 1, two : 2, three : 3});
=> 3

如果没有,并且您出于某种原因不想弄乱 Object 属性,并且已经在使用 jQuery,那么插件同样可以访问:

$.assocArraySize = function(obj) {
    // http://stackoverflow.com/a/6700/11236
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};

模板简介:该模板名称为【我有一个 JavaScript 对象。是否有内置或公认的最佳实践方法来获取此对象的长度?】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。

相关搜索
  • 下载密码 lanrenmb
  • 下载次数 195次
  • 使用软件 Sublime/Dreamweaver/HBuilder
  • 文件格式 编程语言
  • 文件大小 暂无信息
  • 上传时间 02-28
  • 作者 网友投稿
  • 肖像权 人物画像及字体仅供参考
栏目分类 更多 >
热门推荐 更多 >
微信模板 响应式 单页式简历模板 微信图片 自适应 微信公众平台 html5 微信文章 微信素材 企业网站
您可能会喜欢的其他模板