JavaScript 获取对象的长度

JavaScript 获取对象的长度

在 JavaScript 中,要获取对象的长度(即对象中属性的数量),可以使用以下几种方法:

  1. 使用 Object.keys():该方法返回一个对象自身(即不包括继承属性)可枚举属性的数组。
  2. 使用 Object.getOwnPropertyNames():该方法返回一个对象自身(即不包括继承属性)所有属性的数组(包括不可枚举属性,但不包括 Symbol 属性)。
  3. 使用 Reflect.ownKeys():该方法返回一个对象自身(即不包括继承属性)所有属性的数组(包括不可枚举属性和 Symbol 属性)。
  4. 使用 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

通过上述方法,可以根据不同需求,选择合适的方法来获取对象的长度。

posted @   飞仔FeiZai  阅读(3307)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示