如何遍历普通 JavaScript 对象
如何遍历普通 JavaScript 对象
技术背景
在 JavaScript 开发中,经常需要遍历对象的属性和值。不同的 ECMAScript 版本提供了多种遍历对象的方法,每种方法都有其特点和适用场景。掌握这些方法可以帮助开发者更高效地处理对象数据。
实现步骤
传统的 for...in
循环
使用 for...in
循环可以遍历对象的可枚举属性,包括对象自身的属性和继承的属性。为了避免遍历到原型链上的属性,可以使用 hasOwnProperty
方法进行过滤。
1 |
|
ECMAScript 5:Object.keys()
和 Array.prototype.forEach()
Object.keys()
方法会返回一个由给定对象的所有可枚举属性组成的数组,然后可以使用 forEach()
方法遍历这个数组。
1 |
|
ES6/2015:箭头函数和 Object.keys()
使用箭头函数可以使代码更简洁。
1 |
|
ES7/2016:Object.entries()
Object.entries()
方法返回一个给定对象自身可枚举属性的键值对数组,然后可以使用 forEach()
方法遍历这个数组。
1 |
|
递归遍历嵌套对象
对于嵌套对象,可以使用递归函数进行遍历。
1 |
|
核心代码
遍历单层对象
1 |
|
递归遍历嵌套对象
1 |
|
最佳实践
- 选择合适的方法:根据不同的 ECMAScript 版本和具体需求选择合适的遍历方法。如果需要同时获取键和值,
Object.entries()
是一个不错的选择;如果只需要键,Object.keys()
更合适。 - 避免遍历原型链属性:在使用
for...in
循环时,使用hasOwnProperty
方法过滤掉原型链上的属性。 - 递归处理嵌套对象:对于嵌套对象,使用递归函数可以方便地遍历所有层级的属性。
常见问题
for...in
循环会遍历原型链上的属性
解决方法:使用 hasOwnProperty
方法过滤掉原型链上的属性。
1 |
|
ES7 方法性能问题
在处理大型对象时,ES7 的 Object.entries()
方法可能会初始化较多的内部变量,性能不如传统方法。如果对性能有较高要求,可以考虑使用传统方法。
如何遍历普通 JavaScript 对象
https://119291.xyz/posts/how-to-loop-through-a-plain-javascript-object/