前端JavaScript篇之for...in和for...of的区别

目录

  • for...in和for...of的区别
    • `for...in`循环
    • `for...of`循环
    • 区别:


for…in和for…of的区别

在JavaScript中,for...infor...of是两种常用的循环语法,它们有着明显的区别和适用场景。

for...in循环

for...in循环用于遍历一个对象的所有可枚举属性(包括继承的属性)。这种方式主要用于对象,而不是数组,因为它会遍历对象的键(key),而不是值(value)。
假设我们有一个对象,包含几个属性,我们想要遍历这个对象,打印出所有的键和值。

let person = { name: 'Alice', age: 25, city: 'New York' }
for (let key in person) {console.log(key + ': ' + person[key])
}

请添加图片描述

for...of循环

for...of循环用于遍历可迭代对象(如Array,Map,Set,String等)的值。这种方式适用于数组或其他可迭代对象,因为它直接遍历的是对象的值。
假设我们有一个数组,包含几个元素,我们想要遍历这个数组,打印出所有的元素。

let numbers = [1, 2, 3, 4, 5]
for (let number of numbers) {console.log(number)
}

请添加图片描述

区别:

  1. 适用对象:

    • for...in循环用于遍历对象的可枚举属性。它会遍历对象及其原型链上的所有可枚举属性。
    • for...of循环用于遍历可迭代对象(iterable)。这包括数组、字符串、Map、Set等实现了迭代器接口的对象。
  2. 迭代顺序:

    • for...in循环以任意顺序遍历对象的属性。在遍历时,可能会出现非数字键或无序的结果。
    • for...of循环按照迭代对象的顺序依次访问每个元素。对于数组和字符串,它们的顺序是根据索引值的升序。
  3. 迭代内容:

    • for...in循环返回的是属性名(键),可以通过对象[key]来获取对应的属性值。
    • for...of循环返回的是迭代对象中的元素值。
// for...in示例
const obj = { a: 1, b: 2, c: 3 }for (let key in obj) {console.log(key) // 输出属性名:a, b, cconsole.log(obj[key]) // 输出属性值:1, 2, 3
}// for...of示例
const arr = [1, 2, 3]for (let value of arr) {console.log(value) // 输出元素值:1, 2, 3
}const str = 'Hello'for (let char of str) {console.log(char) // 输出字符:H, e, l, l, o
}

请添加图片描述

在上面的示例中,for...in循环遍历了对象obj的可枚举属性,并输出了属性名和对应的属性值。而for...of循环则遍历了数组arr和字符串str的元素,并输出了元素值或字符。

持续学习总结记录中,回顾一下上面的内容:

  • for...in循环用于遍历对象的键,适用于对象。
  • for...of循环用于遍历可迭代对象的值,适用于数组和其他可迭代对象。
  • 使用for...in遍历数组可能会引入意外行为,因为它会遍历数组以外的可枚举属性。
  • for...of提供了一种简洁的方式来遍历数据集合的值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457540.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

引入echarts环形图及显示后端数据

实现效果&#xff1a; 1.下载echarts 并引用 npm install echarts --save 或 pnpm install -S echarts 项目中引用&#xff1a; 在项目main.ts中 import * as echarts from "echarts"; //引入echarts 3.页面中使用 <div id"main" class&quo…

Topaz Photo AI for Mac v2.3.1 补丁版人工智能降噪软件无损放大

想要将模糊的图片变得更加清晰&#xff1f;不妨试试Topaz Photo AI for Mac 这款人工智能、无损放大软件。Topaz Photo AI for Mac 一款强大的人工智能降噪软件&#xff0c;允许用户使用复杂的锐化算法来提高图像清晰度&#xff0c;还包括肖像编辑选项&#xff0c;如面部重塑、…

C#在既有数组中插入另一个数组:Array.Copy方法 vs 自定义插入方法

目录 一、使用的方法 1.使用Array.Copy方法 2.Copy(Array, Int32, Array, Int32, Int32) 3. 使用自定义的方法 二、实例 1.示例1&#xff1a;使用Array.Copy方法 2.示例2&#xff1a;使用自定义的方法 一、使用的方法 1.使用Array.Copy方法 首先定义了一个名为InsertAr…

Mysql大表添加字段失败解决方案

背景 最近遇到一个问题&#xff0c;需要在user用户表千万级别数据中添加两个字段&#xff0c;发现老是加不上去&#xff0c;一直卡死。表数据量不仅大&#xff0c;而且是一个热点表&#xff0c;访问频率特别高&#xff0c;而且该表的访问是在一个大事务中。加字段的时候一直在…

人工智能福利站,初识人工智能,图神经网络学习,第三课

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

人工智能|深度学习——基于全局注意力的改进YOLOv7-AC的水下场景目标检测系统

代码下载&#xff1a; 基于全局注意力的改进YOLOv7-AC的水下场景目标检测系统.zip资源-CSDN文库 1.研究的背景 水下场景目标检测是水下机器人、水下无人机和水下监控等领域中的重要任务之一。然而&#xff0c;由于水下环境的复杂性和特殊性&#xff0c;水下目标检测面临着许多挑…

读千脑智能笔记06_人工智能的未来(上)

1. 人工智能正在经历一场复兴&#xff0c;这是科技界最热门的领域之一 1.1. 大多数科学进步都建立在被广泛接受的理论框架之上。这种理论框架称为“科学范式” 1.2. 人工智能的未来将与大多数人工智能从业者如今的设想存在本质上的不同 1.3. 人工神经网络与人类大脑中的神经…

ChatGPT高效提问—prompt常见用法

ChatGPT高效提问—prompt常见用法 1.1 角色扮演 ​ prompt最为常见的用法是ChatGPT进行角色扮演。通常我们在和ChatGPT对话时&#xff0c;最常用的方式是一问一答&#xff0c;把ChatGPT当作一个单纯的“陪聊者”。而当我们通过prompt为ChatGPT赋予角色属性后&#xff0c;即使…

JCTC | 利用几何深度学习对蛋白质-配体结合pose进行等变灵活建模

Overview 该论文解决了药物开发中蛋白质-配体复合结构灵活建模的挑战。作者提出了一种名为FlexPose的新型深度学习框架&#xff0c;它可以直接对复杂结构进行建模&#xff0c;而不需要传统的采样和评分策略。 该模型结合了标量-向量双特征表示和 SE(3)等变网络设计来处理动态结…

成倍降本增效,提升企业竞争力!SOFAServerless 品牌升级为 Koupleless,重磅发布 1.0 版本...

如果你是企业经营者&#xff0c;在为企业降本增效而发愁&#xff1b;如果你是企业的开发、运维或架构同学&#xff0c;在日常工作中被开发效率、交付问题等困扰…… 欢迎来了解 Koupleless&#xff08;原 SOFAServerless&#xff09;&#xff01; 现在&#xff0c;Koupleless 重…

2024-01-06-AI 大模型全栈工程师 - 机器学习基础

摘要 2024-01-06 阴 杭州 晴 本节简介: a. 数学模型&算法名词相关概念; b. 学会数学建模相关知识&#xff1b; c. 学会自我思考&#xff0c;提升认知&#xff0c;不要只会模仿&#xff1b; 课程内容 1. Fine-Tuning 有什么作用&#xff1f; a. 什么是模型训练&#xff…

Python程序员面试题精选及解析(2)

本文精心挑选了10道Python程序员面试题&#xff0c;覆盖了Python的多个核心领域&#xff0c;包括装饰器、lambda函数、列表推导式、生成器、全局解释器锁(GIL)、单例模式以及上下文管理器等。每道题都附有简洁的代码示例&#xff0c;帮助读者更好地理解和应用相关知识点无论是对…