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]);
});
目录
相关文章
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法详解
本指南详细介绍在Linux系统中安装和管理Node.js的步骤。首先检查现有环境,包括查看当前版本和清除旧版本;接着通过NodeSource仓库安装最新版Node.js并验证安装结果。推荐使用nvm(Node Version Manager)进行多版本管理,便于切换和设置默认版本。同时,提供常见问题解决方法,如权限错误处理和全局模块迁移方案,以及版本回滚操作,确保用户能够灵活应对不同需求。
1484 0
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法
Debian 11更新Node.js主要就是这三种方式,无论你是初涉其中的新手还是找寻挑战的专家,总有一种方式能满足你的需求。现在,你已经是这个
1497 80
|
编解码 JavaScript 前端开发
【Java进阶】详解JavaScript的BOM(浏览器对象模型)
总的来说,BOM提供了一种方式来与浏览器进行交互。通过BOM,你可以操作窗口、获取URL、操作历史、访问HTML文档、获取浏览器信息和屏幕信息等。虽然BOM并没有正式的标准,但大多数现代浏览器都实现了相似的功能,因此,你可以放心地在你的JavaScript代码中使用BOM。
396 23
|
JavaScript 前端开发 Java
js 垃圾回收机制的方法
JS回收机制方法讲解
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
供应链 JavaScript 前端开发
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发
JavaScript遍历table的行和列
来源:http://blog.csdn.net/bobwu/article/details/7497412 1 2 3 4 //遍历表格的每行每列 5 function viewCell() 6 { 7 var count=1; ...
1194 0
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
466 2
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
353 1
JavaScript中的原型 保姆级文章一文搞懂

热门文章

最新文章