JavaScript 获取对象的长度
JavaScript 获取对象的长度
在 JavaScript 中,要获取对象的长度(即对象中属性的数量),可以使用以下几种方法:
- 使用
Object.keys()
:该方法返回一个对象自身(即不包括继承属性)可枚举属性的数组。 - 使用
Object.getOwnPropertyNames()
:该方法返回一个对象自身(即不包括继承属性)所有属性的数组(包括不可枚举属性,但不包括 Symbol 属性)。 - 使用
Reflect.ownKeys()
:该方法返回一个对象自身(即不包括继承属性)所有属性的数组(包括不可枚举属性和 Symbol 属性)。 - 使用
for...in
: 该方法依次访问一个对象及其原型链中所有可枚举的属性。
以下是每种方法的示例代码:
使用 Object.keys()
const x = { f: 6, }; const obj = Object.create(x); obj.a = 1; obj.b = 2; obj.c = 3; Object.defineProperty(obj, "d", { value: 4, enumerable: false, }); const symbolKey = Symbol("e"); obj[symbolKey] = 5; const length = Object.keys(obj).length; console.log(length); // 输出 3
说明:
Object.keys()
只计算对象自身(即不包括继承属性)的可枚举属性。- 添加了一个继承属性
f
、一个不可枚举属性d
和一个 Symbol 属性symbolKey
。 - 输出对象
obj
的长度为 3。
使用 Object.getOwnPropertyNames()
const x = { f: 6, }; const obj = Object.create(x); obj.a = 1; obj.b = 2; obj.c = 3; Object.defineProperty(obj, "d", { value: 4, enumerable: false, }); const symbolKey = Symbol("e"); obj[symbolKey] = 5; const length = Object.getOwnPropertyNames(obj).length; console.log(length); // 输出 4
说明:
Object.getOwnPropertyNames()
计算对象自身(即不包括继承属性)的所有属性,包括不可枚举属性(除了 Symbol 属性)。- 添加了一个继承属性
f
、一个不可枚举属性d
和一个 Symbol 属性symbolKey
。 - 输出对象
obj
的长度为 4。
使用 Reflect.ownKeys()
const x = { f: 6, }; const obj = Object.create(x); obj.a = 1; obj.b = 2; obj.c = 3; Object.defineProperty(obj, "d", { value: 4, enumerable: false, }); const symbolKey = Symbol("e"); obj[symbolKey] = 5; const length = Reflect.ownKeys(obj).length; console.log(length); // 输出 5
说明:
Reflect.ownKeys()
计算对象自身的(即不包括继承属性)所有属性,包括不可枚举属性和 Symbol 属性。- 添加了一个继承属性
f
、一个不可枚举属性d
和一个 Symbol 属性symbolKey
。 - 输出对象
obj
的长度为 5。
使用 for...in
语句
const x = { f: 6, }; const obj = Object.create(x); obj.a = 1; obj.b = 2; obj.c = 3; Object.defineProperty(obj, "d", { value: 4, enumerable: false, }); const symbolKey = Symbol("e"); obj[symbolKey] = 5; let count = 0, count_all = 0; for (let key in obj) { if (obj.hasOwnProperty(key)) { count++; } count_all++; } console.log(count); // 3 console.log(count_all); // 4
说明:
- 使用
for...in
循环遍历对象的属性并计数的方法来获取对象的长度,可计算自有属性和继承属性,但不包括不可枚举属性和 Symbol 属性。 - 添加了一个继承属性
f
、一个不可枚举属性d
和一个 Symbol 属性symbolKey
。
通过上述方法,可以根据不同需求,选择合适的方法来获取对象的长度。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期