JavaScript遍历对象的7种方式

JS 5种遍历对象的方式 几天前一个小伙伴问我 Object.getOwnPropertyNames() 是干什么用的 平时还真没有使用到这个方法,一时不知如何回答 从方法名称来分析,应该是返回的是对象自身属性名组成的数组 那和 Object.keys() 方法不就一样了吗 感觉事情并不这么简单,于是我仔细看了一下这几种遍历对象的方法的区别 for in for in 循环是最基础的遍历对象的方式,它还会得到对象原型链上的属性 // 创建一个对象并指定其原型,bar 为原型上的属性 const obj = Object.create({ bar: 'bar' }) // foo 为对象自身的属性 obj.foo = 立即下载

注:纯手打,如有错误欢迎评论区交流!
转载请注明出处:https://blog.youkuaiyun.com/testleaf/article/details/145523427
编写此文是为了更好地学习前端知识,如果损害了有关人的利益,请联系删除!
本文章将不定时更新,敬请期待!!!
欢迎点赞、收藏、转发、关注,多谢!!!

一、for…in 循环

for...in 循环用于遍历对象的可枚举属性,包括对象自身的属性以及继承的属性,但不包含 Symbol 类型的属性。
示例代码:

const person = {
    name: 'Alice',
    age: 25,
    occupation: 'Engineer'
};

for (const key in person) {
    console.log(`${key}: ${person[key]}`);
}

注意事项:由于 for...in 会遍历继承的属性,若只想遍历对象自身的属性,可以使用 hasOwnProperty 方法进行过滤。

for (const key in person) {
    if (person.hasOwnProperty(key)) {
        console.log(`${key}: ${person[key]}`);
    }
}

二、Object.keys() 方法结合 forEach 方法

Object.keys() 方法会返回一个由对象的可枚举属性名组成的数组,然后可以使用 forEach 方法遍历这个数组。
示例代码:

const person = {
    name: 'Alice',
    age: 25,
    occupation: 'Engineer'
};

const keys = Object.keys(person);
keys.forEach(key => {
    console.log(`${key}: ${person[key]}`);
});

三、Object.values() 方法结合 forEach 方法

Object.values() 方法会返回一个由对象的可枚举属性值组成的数组,然后使用 forEach 方法遍历这个数组。不过这种方式只能获取到值,无法直接获取对应的键。
示例代码:

const person = {
    name: 'Alice',
    age: 25,
    occupation: 'Engineer'
};

const values = Object.values(person);
values.forEach(value => {
    console.log(value);
});

四、Object.entries() 方法结合 for…of 循环

Object.entries() 方法会返回一个由对象的键值对组成的二维数组,每个子数组包含一个键和对应的值,接着可以使用 for...of 循环遍历这个二维数组。
示例代码:

const person = {
    name: 'Alice',
    age: 25,
    occupation: 'Engineer'
};

for (const [key, value] of Object.entries(person)) {
    console.log(`${key}: ${value}`);
}

五、Reflect.ownKeys() 方法结合 forEach 方法

Reflect.ownKeys() 方法会返回一个由对象的所有属性名(包括 Symbol 类型的属性)组成的数组,然后使用 forEach 方法遍历这个数组。
示例代码:

const symbolKey = Symbol('symbolKey');
const person = {
    name: 'Alice',
    age: 25,
    [symbolKey]: 'Secret'
};

Reflect.ownKeys(person).forEach(key => {
    console.log(`${key}: ${person[key]}`);
});

六、Object.getOwnPropertyNames() 方法结合 forEach 方法

Object.getOwnPropertyNames() 方法会返回一个由对象自身的所有属性名(不包括 Symbol 类型的属性)组成的数组,再使用 forEach 方法遍历这个数组。
示例代码:

const person = {
    name: 'Alice',
    age: 25,
    occupation: 'Engineer'
};

Object.getOwnPropertyNames(person).forEach(key => {
    console.log(`${key}: ${person[key]}`);
});

七、Object.getOwnPropertySymbols() 方法结合 forEach 方法

如果需要专门遍历对象的 Symbol 类型的属性,可以使用 Object.getOwnPropertySymbols() 方法,它会返回一个由对象自身的 Symbol 类型属性组成的数组,然后使用 forEach 方法遍历该数组。
示例代码:

const symbolKey = Symbol('symbolKey');
const person = {
    [symbolKey]: 'Secret'
};

Object.getOwnPropertySymbols(person).forEach(symbol => {
    console.log(`${symbol.toString()}: ${person[symbol]}`);
});
【研究生学术英语读写教程翻译 中国科学院大学Unit9】 Unit 9 If Humble People Make the Best Leaders,Why Do We Fall for Charismatic Narcissists? 如果谦逊的人是最好的领导者,为什么我们会爱上魅力型自恋者? 阅读详情

相关推荐

【ros】ROS1的安装和相关使用方法

主要学习ros相关内容

Greary的博客 2379

JS遍历对象的七种方法

1.Object.defineProperty,使用enumerable:true,才能被枚举,默认enumerable:false不可被枚举。返回的是一个大杂烩数组,即包含了对象的所有属性,无论是否可枚举还是属性是symbol,还是继承,将所有的属性返回。的特性会导致一个问题,其继承的属性会被遍历到,所以当我们不想要遍历被继承的属性,那么我们就可以使用。属性,返回形式依旧是数组,值得注意的是,在对象初始化的时候,内部是不会包含任何。可以看出,可以得到对象中,可以获取包含Symol属性的所有的属性值。

weixin_43465508的博客 2万+

5G-A无源物联网:深度解析“不插电“智能的底层技术原理

北京移动推出5G-A无源物联网技术,实现电动车标签"零功耗"运行。该技术通过射频能量收集(利用5G-A基站高功率信号转换为电能)和反向散射通信(调制反射信号传输数据)两大核心技术,使设备无需电池即可工作。5G-A相比4G在信号能量密度、通信速率和定位精度等方面显著提升,结合通感一体等创新技术,为无源物联网提供商用基础。该方案已在北京小区试点应用,实现电动车精准定位管理,标签寿命可达5年以上。专家预测,这项技术将大幅降低物联网部署成本,推动"万物智联"时代的到来。

通信行业老兵、物联网从业者,做一个有趣的普通人。 2010

js遍历对象的方法

js遍历对象的方法

m0_61701551的博客 1万+

手把手教你用Python分析OpenFAST仿真结果:pyDatView处理.out文件与数据可视化技巧

本文详细介绍了如何使用Python中的pyDatView工具分析OpenFAST仿真结果,包括数据加载、质量检查、时域与频域分析、多工况对比及自动化报告生成。通过优化技巧和可视化方法,帮助工程师高效处理.out文件,提升风机性能分析的准确性和效率。

weixin_29311017的博客 183

高通平台蓝牙学习-- 基于WCN6750 Bluetooth 5.2的讲解

摘要:蓝牙5.2解决方案WCN6750具备多项先进特性:完全兼容5.2标准及ANT+协议,支持2Mbps高速BLE和长距离传输;采用射频集成方案,与WLAN共享天线并支持5G并发;内置功率放大器,支持Class1/2传输;提供双音频流和Slimbus接口优化。其HCI UART接口支持3.2Mbps速率,通过BlueZ协议栈实现蓝牙5.2功能,包括2Mbps模式和长距离传输,符合核心规范要求。(149字)

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 3万+

【js】对象的遍历方法总结

对象的遍历方法总结。

qq_48896417的博客 3553

2020年大连理工大学《计算机控制技术》期末试卷

2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 2020年大连理工大学《计算机控制技术》期末试卷 ...

无名何许人的博客 647

JS遍历对象属性的7种方式

在有些开发场景下,可能需要获取一个对象的所有属性字段名,或者同时获取属性字段名和属性值,比如下面的一个普通的对象:},属性值为,实际过程中的对象可能更加复杂,字段也会更多。对于遍历一个对象的属性,最容易想到的就是使用。...

蜗牛在奔跑的博客 2万+

SIWAVE+ADS提取PCB走线寄生参数

本文将介绍一种很适合PCB走线提取寄生电感等参数的方法,即是通过SIWAVE将PCB走线的S参数提取出来,再通过ADS将S参数转换成电感、电容值。

sinat_15150363的博客 1765

开发具有情感分析能力的AI Agent

本文将深入探讨开发具有情感分析能力的AI Agent的各个方面。我们将首先介绍情感分析的基础知识,包括定义、背景和应用领域。接着,我们将详细讲解情感分析的核心概念、数据处理方法和算法原理。随后,文章将展示如何设计情感分析系统架构,并进行项目实战,包括环境安装、源代码实现和案例分析。最后,我们将总结最佳实践和注意事项,为读者提供进一步学习的资源。情感分析(Sentiment Analysis),也称为意见挖掘,是自然语言处理(NLP)的一个分支。

SuperAGI2025 1146

JS中Map对象的创建,遍历(7种)和使用(增删改查)

intro JS中的Object类型实际上是一种键值对映射(key-value pairs)。 但是JS中这种键值对映射有点问题:key只能为string类型。 为了和其他编程语言有相似的数据结构(如Map, Dict等),ES6中新增了Map类型。 API Map() 构造方法。 size 成员方法,返回map的大小。 set(key, value) - Map 新增键值对/修改值,可“链式调用...

wuyujin1997的博客 7万+

Android 13.0 开机启动优化之PMS扫描apk耗时相关功能优化

在android13.0的系统rom定制化开发中,在系统中开发产品时,会根据客户要求内置第三方app,这时如果内置app过多,或者安装的app过多,在系统开机的过程中 在pms扫描安装app的时候,就会比较耗时,这时候就需要优化下pms扫描安装app这块的功能代码,用多线程来实现pms扫描安装app,来加快开机时间,接下来 来实现这个功能

安卓兼职framework和app工程师的博客 1333

【JavaScript】核心语法全攻略:从零基础到面向对象实战

注意,在这里,如果引入了外部文件,还想在再这里写当前网页的专属逻辑时,需要分两个标签写,写在引入外部文件的script中时就会无视内部的代码。如果说HTML是房子的框架,那么CSS就是房子的装修,而JavaScript就是房子的智能系统。和 Python 也差不多,就是格式的不同(Python 用缩进和冒号,JS 用花括号。在 JS 中,对象是属性(变量)和方法(函数)的集合。JS 是一门“聪明”的语言,它会根据你写的内容自动判断类型。函数是把一段常用的代码封装起来,给它起个名字,可以重复调用。

2303_80072254的博客 647

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

resultset不支持循环遍历_盘点JavaScript中数组遍历的全部方式(上篇)

今日鸡汤天生我才必有用,千金散尽还复来。前言JavaScript想必大家都不陌生了,其中的字符串和数组大家经常都会用到,今天就让我们来说说这里面的数组对象的遍历吧,因为遍历经常使用的缘故,所以小编带着大家来解锁遍历的所有方法,以便大家能够更深入的了解数组遍历,并在实际项目中灵活运用。一、Entries这个是 ES6中提供的用于遍历数组的方法,它会返回一个遍历器对象,Entries是对键值...

weixin_39929683的博客 170

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JS对象

定义   任意值的集合,用冒号分割组成名值对(键值对),不同的键值对之间逗号隔开   键值对即对象的属性,键为属性名,值为属性值   对象中的函数叫方法(也是属性) 声明方式 ...

weixin_30375247的博客 107

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

初中级前端 JavaScript 自测清单 - 2

当对象方法需要使用对象中的属性,可以使用this关键字:)}user.say();当代码user.say()执行过程中,this指的是user对象。当然也可以直接使用变量名user来引用say()方法:)}user.say();但是这样并不安全,因为user对象可能赋值给另外一个变量,并且将其他值赋值给user对象,就可能导致报错:)}leo.say();但将user.name改成this.name代码便正常运行。

2301_79099480的博客 624

初中级前端 JavaScript 自测清单 - 2(1)

当对象方法需要使用对象中的属性,可以使用this关键字:)}user.say();当代码user.say()执行过程中,this指的是user对象。当然也可以直接使用变量名user来引用say()方法:)}user.say();但是这样并不安全,因为user对象可能赋值给另外一个变量,并且将其他值赋值给user对象,就可能导致报错:)}leo.say();但将user.name改成this.name代码便正常运行。

2401_84097798的博客 392

JS深拷贝和浅拷贝

文章目录定义浅拷贝对象的浅拷贝数组的浅拷贝深拷贝json序列化jQuery深拷贝lodash函数库实现深拷贝手动写递归方式 定义 什么是浅拷贝:两者指向同一个对象。 浅拷贝 对象的浅拷贝 1、对象的直接遍历赋值。 2、ES6中的 var copyObj = Object.assign({}, obj); 3、ES7扩展运算符 var copyObj = { ...obj } 4、Jquery浅拷贝 var copiedObject = jQuery.extend({}, originalObject)

SCUhzs 131

JS数组的各种方法汇总

JS数组各种方法汇总 1、数组的创建 1、[ ]包裹添加元素,赋值给变量 2、构造器Array对象创建一个数组;                            无参构造:空数组     &nbs

qq_41260655的博客 730

JavaScript中遍历数组和对象的元素

博主最近一直在学习JavaScript,今天给大家分享如何遍历JavaScript中的数组和对象的元素,这篇文章相当于做一篇小的笔记,希望能帮助到大家!

webbc的博客 3081

js 遍历对象的方式

js 遍历对象的方式

喜欢文学的程序员 7545

js遍历json对象

原生js遍历json对象 遍历json对象: 无规律: <script> var json = [   {dd:'SB',AA:'东东',re1:123},   {cccc:'dd',lk:'1qw'} ]; for(var i=0,l=json.length;i<l;i++){   for(var key in json[i]){     alert(key...

james_laughing的博客 1万+

JS 数组和对象的遍历方式

JS 数组和对象的遍历方式

The_more_more的博客 1329
上一篇: 前端学习的一些网站
下一篇: 前端JavaScript力扣HOT100刷题【1-50】
testleaf
博客等级 码龄7年 3514粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

testleaf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值