关键词:对象遍历方式

遍历 JavaScript 对象的属性可以使用几种不同的方法,每种方法都有其适用场景和特点。以下是一些常用的遍历对象属性的方法:

1. for-in 循环

for-in 循环可以遍历一个对象的所有可枚举属性,包括其原型链上的属性。

 1const obj = { a: 1, b: 2, c: 3 };
 2for (const key in obj) {
 3  if (obj.hasOwnProperty(key)) {
 4    // 推荐检查属性是否为对象本身的属性
 5    console.log(key, obj[key]);
 6  }
 7}

使用 hasOwnProperty 方法检查属性是否是对象本身的属性(而不是继承的属性)是一个好习惯。

2. Object.keys()

Object.keys() 方法返回一个包含对象自身所有可枚举属性名称的数组。

 1const obj = { a: 1, b: 2, c: 3 };
 2Object.keys(obj).forEach((key) => {
 3  console.log(key, obj[key]);
 4});

3. Object.values()

Object.values() 方法返回一个包含对象自身所有可枚举属性值的数组。

 1const obj = { a: 1, b: 2, c: 3 };
 2Object.values(obj).forEach((value) => {
 3  console.log(value);
 4});

4. Object.entries()

Object.entries() 方法返回一个给定对象自身可枚举属性的键值对数组。

 1const obj = { a: 1, b: 2, c: 3 };
 2Object.entries(obj).forEach(([key, value]) => {
 3  console.log(key, value);
 4});

5. Object.getOwnPropertyNames()

Object.getOwnPropertyNames() 方法返回一个数组,包含对象自身的所有属性(不论属性是否可枚举),但不包括 Symbol 属性。

 1const obj = { a: 1, b: 2, c: 3 };
 2const propertyNames = Object.getOwnPropertyNames(obj);
 3propertyNames.forEach((name) => {
 4  console.log(name, obj[name]);
 5});

6. Reflect.ownKeys()

Reflect.ownKeys() 方法返回一个数组,包含对象自身的所有键,包括字符串键Symbol 键

 1const obj = { a: 1, b: 2, c: 3, [Symbol("d")]: 4 };
 2Reflect.ownKeys(obj).forEach((key) => {
 3  console.log(key, obj[key]);
 4});

根据需要选择合适的方法进行对象属性的遍历。例如,当你想要同时获取属性的键和值时,Object.entries() 是一个很好的选择。而如果你想要包括 Symbol 属性在内的所有键,那么 Reflect.ownKeys()可能是更合适的选择。

个人笔记记录 2021 ~ 2025