JS中遍历对象的方法讲解

简介: JS中遍历对象的方法讲解

在JavaScript中,有几种常用的方法可以用来遍历对象:

for...in循环

使用for...in循环可以遍历一个对象中的所有可枚举属性。它会将属性名逐个赋值给循环变量,并执行循环体内的代码。
例如:

for (let key in obj) {
   
  console.log(key, obj[key]);
}

当使用for...in循环遍历对象时,需要注意以下几点:

  1. for...in循环会遍历对象自身的可枚举属性以及继承的可枚举属性。如果只想遍历对象自身的属性,可以通过hasOwnProperty()方法来判断属性是否为对象自身的属性。
for (let key in obj) {
   
  if (obj.hasOwnProperty(key)) {
   
    console.log(key, obj[key]);
  }
}
  1. 在遍历过程中,属性名会被赋值给循环变量。如果需要获取属性值,可以通过对象和属性名使用下标访问的方式来获取属性值。
for (let key in obj) {
   
  console.log(key, obj[key]);
}
  1. 使用for...in循环遍历对象时,无法保证属性遍历的顺序。对象的属性在内部存储时是没有固定顺序的,因此遍历顺序不一定与属性定义的顺序相同。

  2. Object.keys()和Object.getOwnPropertyNames()方法只会返回对象自身的属性(包括可枚举和不可枚举属性),而不会返回继承的属性。你可以选择其中一种方法根据需要遍历对象的属性。

Object.keys()方法结合forEach()循环

Object.keys(obj)会返回一个包含对象自身可枚举属性的数组。我们可以使用forEach()方法来遍历这个数组,并对每个属性进行操作。
例如:

Object.keys(obj).forEach(function(key) {
   
  console.log(key, obj[key]);
});

Object.entries()结合forEach()循环

Object.entries(obj)会返回一个包含对象自身可枚举属性的键值对数组。我们可以使用forEach()方法来遍历这个数组,并对每个键值对进行操作。
例如:

Object.entries(obj).forEach(function([key, value]) {
   
  console.log(key, value);
});

使用 Object.entries(obj) 结合 forEach() 循环可以方便地遍历对象的键值对。Object.entries(obj) 返回一个包含对象自身可枚举属性的键值对数组。

在循环中,我们可以使用 forEach() 方法遍历这个数组,并对每个键值对进行操作。forEach() 方法接受一个回调函数作为参数,该回调函数会被传入三个参数:当前项的值、当前项的索引和原始数组。

下面是使用 Object.entries() 结合 forEach() 循环的示例代码:

const obj = {
    name: 'John', age: 25, city: 'London' };

Object.entries(obj).forEach(function([key, value]) {
   
  console.log(key, value);
});

上述示例代码中,obj 对象包含了三个属性:name、age 和 city。通过 Object.entries(obj) 方法获取到键值对数组,然后使用 forEach() 方法循环遍历数组。在回调函数中,我们使用解构赋值的方式将键和值分别赋给 key 和 value 变量,然后将它们打印到控制台。

执行上述代码会输出以下结果:

name John
age 25
city London

通过结合 Object.entries() 和 forEach() 方法,我们可以轻松地遍历对象的所有键值对,并对每个键值对进行相应的操作。请确保对象的属性是可枚举的,否则无法被 Object.entries() 获取到。

Object.getOwnPropertyNames()方法结合forEach()循环

Object.getOwnPropertyNames(obj)会返回一个包含对象自身所有属性(不仅限于可枚举)的数组。我们可以使用forEach()方法来遍历这个数组,并对每个属性进行操作。例如:

Object.getOwnPropertyNames(obj).forEach(function(key) {
   
  console.log(key, obj[key]);
});
目录
相关文章
|
9天前
|
JavaScript 前端开发
如何在 JavaScript 中使用 __proto__ 实现对象的继承?
使用`__proto__`实现对象继承时需要注意原型链的完整性和属性方法的正确继承,避免出现意外的行为和错误。同时,在现代JavaScript中,也可以使用`class`和`extends`关键字来实现更简洁和直观的继承语法,但理解基于`__proto__`的继承方式对于深入理解JavaScript的面向对象编程和原型链机制仍然具有重要意义。
|
12天前
|
Web App开发 JavaScript 前端开发
如何确保 Math 对象的方法在不同的 JavaScript 环境中具有一致的精度?
【10月更文挑战第29天】通过遵循标准和最佳实践、采用固定精度计算、进行全面的测试与验证、避免隐式类型转换以及持续关注和更新等方法,可以在很大程度上确保Math对象的方法在不同的JavaScript环境中具有一致的精度,从而提高代码的可靠性和可移植性。
|
12天前
|
JavaScript 前端开发 索引
js中DOM的基础方法
【10月更文挑战第31天】这些DOM基础方法是操作网页文档结构和实现交互效果的重要工具,通过它们可以动态地改变页面的内容、样式和行为,为用户提供丰富的交互体验。
|
12天前
|
缓存 JavaScript UED
js中BOM中的方法
【10月更文挑战第31天】
|
11天前
|
JavaScript 前端开发
.js方法参数argument
【10月更文挑战第26天】`arguments` 对象为JavaScript函数提供了一种灵活处理参数的方式,能够满足各种不同的参数传递和处理需求,在实际开发中具有广泛的应用价值。
28 7
|
12天前
|
JavaScript 前端开发 图形学
JavaScript 中 Math 对象常用方法
【10月更文挑战第29天】JavaScript中的Math对象提供了丰富多样的数学方法,涵盖了基本数学运算、幂运算、开方、随机数生成、极值获取以及三角函数等多个方面,为各种数学相关的计算和处理提供了强大的支持,是JavaScript编程中不可或缺的一部分。
|
JavaScript 前端开发
javascript中的 类初始化,遍历for in 以及with的用法
function member(name,gender){ this.name=name; this.gender=gender; } function showProperty(obj,objStr){ var str=""; for(var i in obj){ str+=objStr+".
668 0
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
96 2
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的小区物流配送系统附带文章源码部署视频讲解等
122 4
|
4月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的宠物援助平台附带文章源码部署视频讲解等
81 4