for in 和 for of 区别

for in 和 for of 的区别 阅读详情
AI摘要

本文详细介绍了JavaScript中for in和for of循环的区别。for in主要用于遍历对象的属性,包括数组的索引和对象的原型链属性,而for of用于遍历数组元素或具有iterator接口的对象。文章还提到,for in遍历性能较差,推荐使用forEach、map、reduce等方法进行对象迭代。

1.循环数组

区别一:for in 和 for of 都可以循环数组,for in 输出的是数组的index下标,而for of 输出的是数组的每一项的值。

const arr = [1,2,3,4]

// for ... in
for (const key in arr){
  console.log(key) // 输出 0,1,2,3
}

// for ... of
for (const key of arr){
  console.log(key) // 输出 1,2,3,4
}

2.循环对象

区别二:for in 可以遍历对象,for of 不能遍历对象,只能遍历带有iterator接口的,例如Set,Map,String,Array

const object = { name: 'lx', age: 23 }
// for ... in
for (const key in object) {
  console.log(key) // 输出 name,age
  console.log(object[key]) // 输出 lx,23
}

// for ... of
for (const key of object) {
  console.log(key) // 报错 Uncaught TypeError: object is not iterable
}

3.数组对象

const list = [{ name: 'lx' }, { age: 23 }]
for (const val of list) {
  console.log(val) // 输出{ name: 'lx' }, { age: 23 }
  for (const key in val) {
    console.log(val[key]) // 输出 lx,23
  }
}

总结:for in适合遍历对象,for of适合遍历数组。for in遍历的是数组的索引,对象的属性以及原型链上的属性,所以性能较差。

最后,我们还可以使用其他一些方法来迭代对象,例如 forEach 方法、map 方法、reduce 方法等。这些方法不仅可以提供更好的性能和可读性,还可以通过回调函数来实现更加灵活的操作。

反激开关电源设计全解析:从CCM/DCM原理到PCB布局实战 开关电源作为现代电子设备的能量转换核心,其核心原理是通过高频开关动作实现高效的电能变换。反激拓扑因其结构简单、成本低廉且易于实现电气隔离,成为小功率离线式电源的主流选择。其技术价值在于通过变压器耦合实现能量存储与传递,解决了安全隔离与多路输出等关键需求,广泛应用于充电器、适配器及家电供电等场景。本文聚焦反激电路,深入剖析其CCM与DCM两种工作模式的原理差异及选型考量,并结合伏秒平衡定律与RCD钳位等热词,详解从变压器计算到MOSFET选型的完整工程设计流程。 阅读详情

相关推荐

基于FaceX-Zoo实现的Face Mask Adding人脸戴口罩

人脸系列文章目录 文章目录人脸系列文章目录前言一、加口罩效果二、实现原理二、代码实现 前言 目前人脸加口罩均为在人脸位置贴图式的,非常不真实。前段时间京东开源一个基于PRnet实现的3D口罩拟合人脸,加口罩非常逼真,但是只是单独一个加口罩demo,没有完整的流程。于是本人结合人脸检测,关键点对齐。PRnet加口罩实现一个完整的加口罩流程。只需一个命令简单方便调用,实现人脸加口罩。 https://github.com/JDAI-CV/FaceX-Zoo 一、加口罩效果 下图可以看出效果还是非常逼真的

zengwb的博客 3391

你理解了for-in 和 for-of 吗?他们有什么区别?

在选择使用 for-in 循环还是 for-of 循环时,我们需要考虑对象的类型以及我们需要迭代的内容。需要注意的是,for-in 循环并不是按照对象属性在对象中的顺序迭代的。for-in 循环适用于遍历对象,包括普通对象、数组、函数等,而 for-of 循环适用于遍历可迭代对象,包括数组、字符串、Map、Set、TypedArray 等。for-in 循环迭代对象的是键名,而 for-of 循环迭代对象的是值。因此,for-in 循环适用于迭代对象的键名,而 for-of 循环适用于迭代对象的值。

tyxjolin的专栏 2万+

避坑指南:vmdk转qcow2镜像时你可能会遇到的5个问题及解决方法

本文详细解析了将VMDK虚拟机镜像转换为QCOW2格式时可能遇到的五大核心问题,特别是启动失败的常见原因及解决方案。内容涵盖格式差异、预处理优化、转换命令详解,并针对根文件系统挂载失败、GRUB引导失败、网卡识别、性能异常等典型故障提供了具体排查与修复步骤,旨在帮助运维人员高效、可靠地完成镜像迁移。

websocket5live的博客 275

for in 和 for of的区别

1.循环数组 区别一:for in 和 for of 都可以循环数组,for in 输出的是数组的index下标,而for of 输出的是数组的每一项的值。 const arr = [1,2,3,4] // for ... in for (const key in arr){ console.log(key) // 输出 0,1,2,3 } // for ... of for (const key of arr){ console.log(key) // 输出 1,2,3,

qq_43796489的博客 5万+

Windows 2012 SYSVOL复制失败的处理

题外话:晓原理、知架构、查日志是排错的三件法宝今天在DC1上新建并链接了一个组策略对像,在客户端刷新时,却报下面的错误:“处理组策略失败。Windows无法应用组策略对象LDAP….”如下图所示:于是在客户端用\\domain.com访问,发现\\domain.com\SYSVOL\domain.com\policies下面没有上面报错的组策略对象。这是怎么一回事呢,pin...

weixin_33989780的博客 1669

WINCC8.1工业组态软件安装与授权配置指南

SCADA系统作为工业自动化控制的核心平台,通过实时数据采集与监控实现生产流程可视化。WINCC作为西门子旗舰级组态软件,其8.1版本凭借稳定的运行时环境在汽车制造、流程工业等领域广泛应用。本文从工业控制系统软件安装规范切入,重点解析WINCC8.1与Automation License Manager的协同工作原理,详细说明包括系统环境检查、安装包校验、授权文件配置等关键技术环节。针对工程实施中常见的内存配置不足、授权管理器报错等典型问题,提供经过现场验证的解决方案,特别适用于需要进行产线监控系统升级维护

cqwf95925的博客 1657

for in 循环详解

for in循环 for...in 语句以任意顺序遍历一个对象的除 Symbol 以外的可枚举属性。 for...in 循环只遍历可枚举属性。像 Array和 Object 使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性,例如 String 的 indexOf() 方法或 Object的toString()方法。循环将遍......

wfly blog 12万+

EV1527 vs HS1527:固定码芯片的STM32解码避坑指南

本文深入解析EV1527与HS1527固定码芯片的技术差异,提供基于STM32的完整解码方案与稳定性优化策略。通过硬件接口配置、状态机实现及示波器诊断,解决工业遥控、安防报警等场景中的解码难题,特别针对时序差异和干扰问题给出实用解决方案。

o0p1q2r3的博客 332

for of 和 for in 的一些区别

自己经常会搞混淆for of 和for of 的区别以及用法,所以记录一下,方便以后忘记了,可以回来看看 1.for in for...in语句以任意顺序遍历一个对象的除Symbol以外的可枚举属性。 用法: for (variable in object) variable 在每次迭代时,variable会被赋值为不同的属性名。 object 非Symbol类型的可枚举属性被迭代的对象。 如果你只要考虑对象本身的属性,而不是它的原型,那么使用getOwnPropertyNames...

菜鸟的博客 2487

从硬件到软件:深度解析D435i USB SCP overflow错误的根源与解决方案

本文深入解析Intel RealSense D435i相机在ROS环境下常见的'USB SCP overflow'错误,特别是与`control_transfer`相关的错误提示。从硬件配置到软件优化,详细介绍了如何通过调整USB接口、优化`rs_camera.launch`参数、更新固件驱动等方法解决数据传输溢出问题,提升设备稳定性和性能。

yy01234的博客 771

别再盯着那 100 条数据了,RAP OData 分页机制到底在保护什么

摘要: SAP BTP ABAP Environment 的 OData 服务默认采用分页保护机制,未指定 $top 时仅返回100条数据并附带下一页链接。这种设计旨在防止资源滥用,而非服务故障。客户端应遵循OData协议规范,直接使用服务端返回的 next link 进行分页请求,而非自行构造URL。当指定 $top 参数时,若数值超过5000仍会被强制分页。该机制在SAPUI5控件中被自动处理,但自定义客户端需主动实现分页逻辑。对于自定义实体(Custom Entity),开发者需在Query Prov

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 865

for···in和for···of的区别

for···in和for···of的区别: 首先一句话:(for···in取key,for··of取value) 1从遍历数组角度来说,for···in遍历出来的是key(即下标),for···of遍历出来的是value(即数组的值) var arr = [99,88,66,77]; for(let i in arr){ console.log(i); //0,1,2,3 } for(let i of arr){ consoel.log(i); //99,88,66,77 } 2从

qq_40277632的博客 280

StarRocks 面试题及参考答案详解(万字详解)

Broker Load的过程通常涉及到数据的解析、转换和加载,它支持多种数据格式,并且可以处理复杂的数据导入任务。一方面,压缩可以减少磁盘I/O操作,因为压缩后的数据占用的空间更小,需要读取的数据块数量也就更少。在StarRocks中,表数据可以被划分成多个分区,每个分区包含表的一部分数据。在传统的行存储模型中,数据是按行组织的,这意味着在执行分析查询时,系统需要读取并处理整行数据,即使很多时候只需要查询其中的少数几列。物化视图的更新可以是完全重算,也可以是增量更新,取决于物化视图的定义和数据变更的模式。

大模型大数据攻城狮的专栏 2084

js中for-in和for-of的区别

在JavaScript中,for-in和for-of是两种不同的循环结构,它们有一些重要的区别和联系。for-in循环和for-of循环是JavaScript中用于迭代对象的两种方法。它们的区别在于迭代对象的内容、类型、顺序和原理。通常,我们应该根据需要选择合适的循环方法,以提高效的迭代对象。同时,我们也需要注意到 for-in循环的一些缺陷。由于它会遍历对象的原型链,导致性能下降,而且不能保证迭代顺序,所以我们应该避免在数组和字符串上使用for-in循环。

小马甲 4020

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

for…in和for…of的用法与区别

for in和for of的用法与区别 今天说说for in和for of的区别与 用法,详细简单明了! for…in for…in 循环只遍历可枚举属性(包括它的原型链上的可枚举属性)。像 Array和Object使用内置构造函数所创建的对象都会继承自Object.prototypeString.prototype的不可枚举属性。 例如 String 的 indexOf() 方法或 Object的toString()方法。循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性(更接近

Kaizd的博客 1407

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

JS中for in和for of的区别

for in和for of是JavaScript中常用的遍历方法,但它们的应用场景和遍历对象有所不同。for in主要用于遍历对象的属性名或数组的索引,通过对象名[key]或数组名[key]访问对应的属性值或数组元素。而for of则用于遍历数组的值或字符串的每个字符,直接获取元素值。例如,for in遍历对象时输出属性名和值,遍历数组时输出索引和元素;for of遍历数组或字符串时直接输出元素或字符。选择合适的方法可以提高代码的可读性和效率。

2301_76459194的博客 2032

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

for...in和for...of的区别

for…in和for…of的区别

weixin_49708498的博客 371

JavaScript中 for of 和 for in 的区别?

先说结论: for...in 循环出的是 key, for...of 循环出的是 value 。 for...of 是 ES6 新引入的特性,修复了 ES5 引入的 for...in 的不足。 for...of 不能循环普通的对象,需要通过和 Object.keys() 搭配使用。 推荐在循环对象属性的时候使用 for...in ,在遍历数组的时候的时候使用 for...of 。 let ...

猫老板的豆 936

for···in··· 和 for···of··· 的区别

好久不见,我又来整理心得了 今天来说说for···in··· 和 for···of··· 的区别 先看看for···in··· // 数组 let Fin = [1, 2, 3] for(let i in Fin) { console.log(i) } //对象 let Fof = { name: 'rider', do: 'henshin' } for(let i in Fof){ console.log(i) } 输出结果为: 这里的输出的为键(key)

Robergean的博客 915

for-in 和 for-of 有什么区别

for…of 是 ES6 新增的遍历方式,允许遍历一个含有 iterator 接口的数据结构(数组、对象等)并返回各项的值,和 ES3 中的 for…in 的区别如下: for…of 遍历获取的是对象的键值,for…in 获取的是对象的键名 for…in 会遍历对象整个原型链,性能非常差,不推荐使用;而 for…of 只遍历当前对象,不会遍历原型链 对于数组的遍历,for…in 会返回数组中所有可枚举的属性(包括原型链上可枚举的属性);for…of 只返回数组的下标对应的属性值 ...

weixin_45087659的博客 723

for in 和for of 的区别

最近在学习es6的知识,看到了for of 这新的循环方法,所以就测试一下和以前for in有什么不同,一下是一些不同地方,当然还有其他不同的,暂时还没有发现: for … in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。 当我们手动给Array对象添加了额外的属性后,for … in循环将带来意想不到的意外效果: ...

qq_38152997的博客 423

for in和for of的区别

for in和for of二者都可以循环遍历数组,区别在于:for in获取的是数组元素的下标,而for of获取的是数组元素.(1) for in和for of都可以循环数组,但for in获取的是数组元素的下标,for of获取的是数组元素.(2) for in可以循环遍历对象,但for of不可以循环遍历对象.for in可以循环遍历对象,但for of不可以循环遍历对象 .

xiaocantongxue的博客 138
上一篇: uni-app微信小程序页面跳转方式
下一篇: 前端对象创建的五种模式
核动力驴_
博客等级 码龄5年 54粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值