for in 和 for of 的区别

news/2025/1/11 7:15:56/

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

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>const arr = [1, 2, 3, 4, 5]// for infor (const index in arr) {console.log(index); // 输出 0, 1, 2, 3, 4}// for offor (const item of arr) {console.log(item) // 输出 1, 2, 3, 4, 5}</script>
</body></html>

2.for in 可以遍历对象,for of 不能遍历对象,只能遍历带有iterator(迭代器)接口的,例如Set,Map,String,Array。

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>const object = { name: 'Jack', age: 18 }// for ... infor (const key in object) {console.log(key) // 输出 name,ageconsole.log(object[key]) // 输出 Jack,18}// for ... offor (const key of object) {console.log(key) // 报错 Uncaught TypeError: object is not iterable}</script>
</body></html>
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>// 使用for...of循环遍历Set实例的例子const mySet = new Set([1, 2, 3, 4, 5]);// 使用for...of循环遍历Set中的元素for (const value of mySet) {console.log(value); // 打印每个元素的值}// 使用for...of循环遍历Map对象的例子const map = new Map();// 添加键值对map.set('key1', 'value1');map.set('key2', 'value2');map.set('key3', 'value3');// 使用for...of遍历Map对象for (const [key, value] of map) {console.log(key + ' = ' + value);}</script>
</body></html>

3.数组对象

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><script>const list = [{ name: 'Jack' }, { age: 18 }]for (const val of list) {console.log(val) // 输出 { name: 'Jack' },{ age: 18 }for (const key in val) {console.log(val[key]) // 输出 Jack,18}}</script>
</body></html>

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


http://www.ppmy.cn/news/1420947.html

相关文章

【hive】单节点搭建hadoop和hive

一、背景 需要使用hive远程debug&#xff0c;尝试使用无hadoop部署hive方式一直失败&#xff0c;无果&#xff0c;还是使用有hadoop方式。最终查看linux内存占用6GB&#xff0c;还在后台运行docker的mysql(bitnami/mysql:8.0)&#xff0c;基本满意。 版本选择&#xff1a; &a…

【从浅学到熟知Linux】进程控制下篇=>进程程序替换与简易Shell实现(含替换原理、execve、execvp等接口详解)

&#x1f3e0;关于专栏&#xff1a;Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 进程程序替换什么是程序替换及其原理替换函数execlexeclpexecleexecvexecvpexecvpeexecve 替换函数总结实现…

ClickHouse--17--聚合函数总结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 环境1.创建clickhouse表2.插入数据 函数(1)count&#xff1a;计算行数(2)min&#xff1a;计算最小值(3)max&#xff1a;计算最大值(4)sum&#xff1a;计算总和&…

代码随想录刷题day56|2个字符串的删除操作编辑距离

文章目录 day55学习内容一、2个字符串的删除操作1.1、动态规划五部曲1.1.1、 确定dp数组&#xff08;dp table&#xff09;以及下标的含义1.1.2、确定递推公式1.1.3、 dp数组如何初始化1.1.4、确定遍历顺序1.1.5、输出结果 1.2、代码 二、编辑距离2.1、动态规划五部曲2.1.1、 确…

若依前端分离版中使用二维码功能

一、安装 在前端项目工程目录&#xff0c;远端执行如下命令 // npm npm install vue-qr --save // yarn yarn add vue-qr 二、引入组件 在main.js文件中增加如下的内容 // vue2.x import VueQr from vue-qr //注册组件 Vue.component(VueQr, VueQr)// vue3.x import vueQr f…

uni-app中页面生命周期与vue生命周期的执行顺序对比

应用生命周期 uni-app 支持如下应用生命周期函数&#xff1a; 函数名说明平台兼容onLaunch当uni-app 初始化完成时触发&#xff08;全局只触发一次&#xff09;&#xff0c;参数为应用启动参数&#xff0c;同 uni.getLaunchOptionsSync 的返回值onShow当 uni-app 启动&#x…

C++笔记:类和对象

类和对象 认识类和对象 先来回忆一下C语言中的类型和变量&#xff0c;类型就像是定义了数据的规则&#xff0c;而变量则是根据这些规则来实际存储数据的容器。类是我们自己定义的一种数据类型&#xff0c;而对象则是这种数据类型的一个具体实例。类就可以理解为类型&#xff0c…

数据结构DAY4--哈希表

哈希表 概念&#xff1a;相当于字典&#xff0c;可以根据数据的关键字来寻找相关数据的查找表。 步骤&#xff1a;建立->插入->遍历->查找->销毁 建立 建立数据&#xff0c;形式随意&#xff0c;但一般为结构体&#xff08;储存的数据量大&#xff09;&#xff…