从0开始学习JavaScript--JavaScript 循环与迭代详解

JavaScript中的循环和迭代是编写高效和灵活代码的关键。循环用于重复执行一段代码,而迭代则用于遍历数据结构。本文将深入研究JavaScript中常见的循环结构和迭代方法,并通过丰富的示例代码来帮助读者更好地理解和运用这些概念。

基本的for循环

for循环是JavaScript中最常见的循环结构之一,它允许按照指定的次数重复执行一段代码。

// 示例:基本的for循环
for (let i = 0; i < 5; i++) {console.log(`Iteration ${i}`);
}

在这个例子中,for循环将会执行5次,每次输出当前迭代的索引。

for…in循环

for...in循环用于遍历对象的可枚举属性,它将迭代对象的键值。

// 示例:for...in循环
const person = { name: 'John', age: 30, job: 'developer' };for (let key in person) {console.log(`${key}: ${person[key]}`);
}

这个例子中,for...in循环将输出person对象的每个属性及其对应的值。

for…of循环

for...of循环是ES6引入的新循环,它用于遍历可迭代对象(如数组、字符串等),将迭代的值直接赋给变量。

// 示例:for...of循环
const colors = ['red', 'green', 'blue'];for (let color of colors) {console.log(color);
}

在这个例子中,for...of循环遍历了数组colors中的每个元素。

while循环

while循环允许在条件为真的情况下重复执行一段代码,直到条件变为假。

// 示例:while循环
let count = 0;while (count < 3) {console.log(`Count: ${count}`);count++;
}

这个例子中,while循环将会执行3次,输出当前计数值。

do…while循环

do...while循环与while循环类似,但它保证至少执行一次循环体,然后再根据条件决定是否继续执行。

// 示例:do...while循环
let num = 0;do {console.log(`Number: ${num}`);num++;
} while (num < 3);

在这个例子中,do...while循环会执行至少一次,即使条件不满足。

forEach方法

数组的forEach方法是一种更现代和函数式的迭代方式,它接受一个回调函数,对数组的每个元素执行该函数。

// 示例:forEach方法
const numbers = [1, 2, 3, 4, 5];numbers.forEach((num, index) => {console.log(`Element at index ${index}: ${num}`);
});

这个例子中,forEach方法遍历数组numbers的每个元素,并输出其索引和值。

map方法

map方法是数组的另一种迭代方法,它创建一个新数组,其中包含对原数组的每个元素调用回调函数的结果。

// 示例:map方法
const squaredNumbers = numbers.map(num => num ** 2);console.log(squaredNumbers); // 输出:[1, 4, 9, 16, 25]

在这个例子中,map方法创建了一个新数组,其中包含了原数组numbers中每个元素的平方值。

迭代器和生成器

迭代器和生成器是更高级的迭代概念。迭代器是一种对象,它具有next方法,通过该方法可以逐个访问序列中的值。生成器是一种特殊的函数,它可以通过yield语句在每次调用时产生值。

// 示例:迭代器和生成器
function* countUpTo(limit) {let count = 1;while (count <= limit) {yield count;count++;}
}const iterator = countUpTo(5);for (let value of iterator) {console.log(value);
}

在这个例子中,countUpTo是一个生成器函数,通过yield语句逐个产生数字。通过for...of循环,可以遍历生成器产生的值。

使用递归进行迭代

递归是一种函数调用自身的技术,它常常用于解决可以分解为相似子问题的问题。通过递归,可以实现更灵活的迭代方式。

// 示例:使用递归进行迭代
function factorial(n) {if (n === 0 || n === 1) {return 1;} else {return n * factorial(n - 1);}
}console.log(factorial(5)); // 输出:120

在这个例子中,factorial函数通过递归计算了阶乘。

总结

JavaScript中的循环与迭代是编写高效、灵活代码的重要组成部分。通过for循环、for...in循环、for...of循环等基础结构,能够有效地处理重复任务,实现对数组、对象等数据结构的遍历。同时,ES6引入的迭代器、生成器等新特性以及数组的forEachmap等高阶方法,提供了更现代、函数式的迭代方式,使得代码更简洁、可读。递归作为一种灵活的迭代方式,能够处理具有相似子问题的复杂情况,展现出更强大的适应性。

深入理解这些循环和迭代的概念,有助于开发者选择最适合任务需求的方法,提高代码的可维护性和可扩展性。无论是处理数组元素、对象属性,还是解决数学问题,不同的迭代方式都能够帮助我们更优雅地解决问题。总体而言,JavaScript的循环和迭代机制为开发者提供了多种工具,让编写高效、清晰的代码变得更为轻松。在实际项目中,熟练掌握这些技术,将为开发过程中的各种场景提供强大的支持。

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

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

相关文章

el-table固定表头(设置height)出现内容过多时不能滚动问题

主要原因是el-table没有div包裹 解决&#xff1a;加一个div并设置其高度和overflow 我自己的主要代码 <div class"contentTable"><el-tableref"table":data"tableData"striperow-dblclick"onRowDblclick"height"100%&q…

B031-网络编程 Socket Http TomCat

目录 计算机网络网络编程相关术语IP地址ip的概念InerAdress的了解与测试 端口URLTCP、UDP和7层架构TCPUDPTCP与UDP的区别和联系TCP的3次握手七层架构 Socket编程服务端代码客户端代码 http协议概念Http报文 Tomcat模拟 计算机网络 见文档 网络编程相关术语 见文档 IP地址 …

3.3 Windows驱动开发:内核MDL读写进程内存

MDL内存读写是一种通过创建MDL结构体来实现跨进程内存读写的方式。在Windows操作系统中&#xff0c;每个进程都有自己独立的虚拟地址空间&#xff0c;不同进程之间的内存空间是隔离的。因此&#xff0c;要在一个进程中读取或写入另一个进程的内存数据&#xff0c;需要先将目标进…

unity教程

前言 伴随游戏行业的兴起&#xff0c;unity引擎的使用越来越普遍&#xff0c;本文章主要记录博主本人入门unity的相关记录大部分依赖siki学院进行整理。12 一、认识unity引擎&#xff1f; 1、Unity相关信息&#xff1a; Unity的诞生&#xff1a;https://www.jianshu.com/p/550…

Springboot更新用户头像

人们通常(为徒省事)把一个包含了修改后userName的完整userInfo对象传给后端&#xff0c;做完整更新。但仔细想想&#xff0c;这种做法感觉有点二&#xff0c;而且浪费带宽。 于是patch诞生&#xff0c;只传一个userName到指定资源去&#xff0c;表示该请求是一个局部更新&#…

Filter和ThreadLocal结合存储用户id信息

ThreadLocal并不是一个Thread&#xff0c;而是Thread的局部变量。当使用ThreadLocal维护变量时&#xff0c;ThreadLocal为每个使用该变量的线程提供独立的变量副本&#xff0c;所以每一个线程都可以独立地改变自己的副本&#xff0c;而不会影响其它线程所对应的副本。ThreadLoc…

十一、统一网关GateWay(搭建网关、过滤器、跨越解决)

目录 一、网关技术的实现 在SpringCloud中网关的实现包括两种: 作用&#xff1a; 二、搭建网关服务 1、新建模块&#xff0c;并添加依赖 2、新建Gateway包&#xff0c;并编写启动类 3、编写yml文件 4、启动服务&#xff0c;并在网页内测试 5、步骤 三、路由断言工厂 …

android PopupWindow设置

记录一个小功能&#xff0c;使用场景&#xff0c;列表项点击弹出 如图&#xff1a; java类代码&#xff1a; public class PopupUtil extends PopupWindow {private Activity context;private View view;private ListView listView;private TextView m_tv_reminderm, m_tv_Wa…

专注于绘画,不受限制!尝试Growly Draw for Mac的快速绘画应用

Growly Draw Mac版是Mac平台上的一款绘画应用&#xff0c;它提供了简单易用的画板页面和多种色彩、画笔工具&#xff0c;让你可以轻松地完成作画。无论你是初学者还是专业人士&#xff0c;都可以在这款应用中找到适合自己的绘画方式。通过使用Growly Draw Mac版&#xff0c;你可…

高防IP是什么?如何隐藏源站IP?如何进行防护?

高防IP是针对互联网服务器遭受大流量的DDoS攻击后导致服务不可用的情况下,推出的付费增值服务。用户在数据不转移的情况下,就可以通过配置高防IP , 将攻击流量引流到高防|P,确保源站的稳定可靠。高防IP采用的技术手段包括DDoS防护、WAF ( Web应用程序防火墙)等,它能够有效抵御来…

机器学习第7天:逻辑回归

文章目录 介绍 概率计算 逻辑回归的损失函数 单个实例的成本函数 整个训练集的成本函数 鸢尾花数据集上的逻辑回归 Softmax回归 Softmax回归数学公式 Softmax回归损失函数 调用代码 参数说明 结语 介绍 作用&#xff1a;使用回归算法进行分类任务 思想&#xff1a;…

Lstm+transformer的刀具磨损预测

视频讲解: 基于Lstm+transformer的刀具磨损预测实战_哔哩哔哩_bilibili 结果展示: 数据展示: 主要代码: # pip install openpyxl -i https://pypi.tuna.tsinghua.edu.cn/simple/ # pip install optuna -i https://pypi.tuna.tsinghua.edu.cn/simple/ import numpy as np…

深信服AC应用控制技术

拓扑图 目录 拓扑图 一.上班时间不允许使用qq(假设上班时间是上午9到12&#xff0c;下午14到18) 1.新增上班时间不允许使用qq访问权限策略 2.将策略应用到组&#xff0c;例如修仙部 3.验证 上班时间发现登录不了 下班时间可以登录 二.上班时间不允许访问视频网站(假设上班时…

SQLite3 数据库学习(一):数据库和 SQLite 基础

参考引用 SQL 必知必会SQLite 权威指南&#xff08;第二版&#xff09;关系型数据库概述 1. 数据库基础 1.1 什么是数据库 数据库&#xff08;database&#xff09;&#xff1a;保存有组织的数据的容器&#xff08;通常是一个文件或一组文件&#xff09; 可以将其想象为一个文…

idea查看UML类图

idea查看UML类图 一、如何查看UML类图 1.1 选择需要查看的类或者包&#xff0c;鼠标右键&#xff0c;选择Diagrams->Show Diagram 1.2 对于UML类图中的包&#xff0c;选中后点击鼠标右键-> Expand Nodes(展开节点) 展开前 展开后 1.3 展开后分布比较凌乱&#xff…

带你快速掌握Linux最常用的命令(图文详解)- 最新版(面试笔试常考)

最常用的Linux指令&#xff08;图文详解&#xff09;- 最新版 ls&#xff1a;列出目录中的文件和子目录。&#xff08;重点&#xff09;cd&#xff1a;改变当前工作目录。绝对路径&#xff1a;相对路径 pwd&#xff1a;显示当前工作目录的路径。mkdir&#xff1a;创建一个新的目…

教你轻松解决win系统ucrtbased.dll丢失的问题,亲测有效!

ucrtbased.dll是一个动态链接库文件&#xff08;DLL&#xff09;&#xff0c;它是Windows操作系统中的一部分&#xff0c;主要负责提供操作系统和应用程序所需的函数和接口。这个文件包含了操作系统和应用程序共同使用的通用代码&#xff0c;以确保不同程序之间的兼容性和稳定性…

6.2 List和Set接口

1. List接口 List接口继承自Collection接口&#xff0c;List接口实例中允许存储重复的元素&#xff0c;所有的元素以线性方式进行存储。在程序中可以通过索引访问List接口实例中存储的元素。另外&#xff0c;List接口实例中存储的元素是有序的&#xff0c;即元素的存入顺序和取…

C语言之for while语句详解

C语言之for while语句详解 文章目录 C语言之for while语句详解简介1 while语句1.1while语句的格式1.2 while语句的实践 2 for2.1 for语句格式2.2 for循环的实践 3 do while3.1 do while语句格式3.2 do while循环的实践 3 循环中break和continue3.1 while语句中的break和continu…

编写程序,要求输入x的值,输出y的值。分别用(1)不嵌套的if语句(2)嵌套的if语句(3)if-else语句(4)switch语句。

编写程序&#xff0c;要求输入x的值&#xff0c;输出y的值。分别用&#xff08;1&#xff09;不嵌套的if语句&#xff08;2&#xff09;嵌套的if语句&#xff08;3&#xff09;if-else语句&#xff08;4&#xff09;switch语句。 选择结构是编程语言中常用的一种控制结构&…