如何遍历js对象

如何遍历js对象
最新回答
╭⌒浅痛

2022-01-29 16:24:27

遍历 JavaScript 对象有多种方法,以下是常用的几种方式及其特点:

1. for...in 循环
  • 特点:遍历对象的所有可枚举属性(包括继承自原型链的属性)。
  • 示例:const person = { name: "John Doe", age: 30, city: "New York" };for (const property in person) { console.log(`${property}: ${person[property]}`);}
  • 输出:name: John Doeage: 30city: New York
  • 注意:若需排除继承属性,需配合 Object.hasOwnProperty() 检查。
2. Object.keys()
  • 特点:返回对象自身可枚举属性的键组成的数组,仅遍历自有属性。
  • 示例:const keys = Object.keys(person);for (const key of keys) { console.log(`${key}: ${person[key]}`);}
  • 输出:同上。
3. Object.values()
  • 特点:返回对象自身可枚举属性的值组成的数组。
  • 示例:const values = Object.values(person);for (const value of values) { console.log(value);}
  • 输出:John Doe30New York
4. Object.entries()
  • 特点:返回对象自身可枚举属性的键值对数组,适合同时获取键和值。
  • 示例:const entries = Object.entries(person);for (const [key, value] of entries) { console.log(`${key}: ${value}`);}
  • 输出:同上。
5. 其他方法(较少使用)
  • Object.getOwnPropertyNames():遍历所有自有属性(包括不可枚举属性)。
  • Reflect.ownKeys():包括符号属性在内的所有自有键。
  • 数组方法(如 forEach):需先通过 Object.keys() 或 Object.entries() 转换。
总结
  • 推荐方法

    需键值对时用 Object.entries()。

    仅需键或值时用 Object.keys() 或 Object.values()。

    需包含继承属性时用 for...in(但需注意过滤)。

  • 避免混淆:for...in 和 Object.keys() 的行为差异在于是否包含继承属性。

根据需求选择合适的方法,确保代码简洁高效。