【只会for循环? 来看下, Nodejs中典型的5种循环方式】

2024-05-23 23:20

本文主要是介绍【只会for循环? 来看下, Nodejs中典型的5种循环方式】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Nodejs中的,除了经典的for循环 , 其实还有几种好用的循环方式, 并有典型的使用场景。下面来一起看下👇🏻

5种循环用法

  1. For Loop:这是最常见的循环方式,适用于你知道循环次数的情况。
for (let i = 0; i < 10; i++) {console.log(i);
}

最常见用法,优点是通用,基本上各个语言都有这个写法。缺点是有些场景使用不方便。

  1. While Loop:当你不知道循环次数,但知道循环结束的条件时,可以使用 while 循环。
let i = 0;
while (i < 10) {console.log(i);i++;
}
  1. For…of Loop:这是 ES6 引入的新特性,用于遍历数组或其他可迭代对象。
const array = [1, 2, 3, 4, 5];
for (const value of array) {console.log(value);
}

这种循环本质属于迭代遍历,可用于遍历可迭代对象(如数组、Map、Set、字符串等)。它直接提供了每个元素的值,而不是索引或键名。此外这种遍历,还可以自定义迭代 内容。

自定义迭代遍历-示例1:

const iterable = {[Symbol.iterator]() {let i = 1;return {next() {if (i <= 3) {return { value: i++, done: false };}return { value: undefined, done: true };},};},
};for (const value of iterable) {console.log(value);
}
// 1
// 2
// 3

或者换种写法 ,自定义迭代遍历-示例2

const iterable = {*[Symbol.iterator]() {yield 1;yield 2;yield 3;},
};for (const value of iterable) {console.log(value);
}
// 1
// 2
// 3

自定义迭代遍历-示例3: early exiting

const source = [1, 2, 3];const iterator = source[Symbol.iterator]();for (const value of iterator) {console.log(value);if (value === 1) {break;}console.log("This string will not be logged.");
}
// 1// Another loop using the same iterator
// picks up where the last loop left off.
for (const value of iterator) {console.log(value);
}
// 2
// 3// The iterator is used up.
// This loop will execute no iterations.
for (const value of iterator) {console.log(value);
}
// [No output]

可以看到迭代器遍历,中途中止退出迭代后,下次使用相同迭代器可以从上次中止的位置继续迭代遍历。

  1. Array.prototype.forEach:这是一个数组方法,用于遍历数组。
const array = [1, 2, 3, 4, 5];
array.forEach((value, index) => {console.log(value);
});

它提供了元素值和索引两个参数,但不能使用 break 或 continue,也不能通过 return 语句跳出循环。

  1. For…in Loop:这种循环用于遍历对象的键名。
const obj = { a: 1, b: 2, c: 3 };
for (const key in obj) {console.log(key, obj[key]);
}

对象友好,这种循环用于遍历对象的键名。它不仅可以遍历对象自身的属性,还会遍历其原型链上的属性(除非属性被标记为不可枚举)。

小结

最后小结一下,遍历数组可以用 for, while, for of, forEach,遍历对象可以用 for in,如果想自定义遍历逻辑还可以自定义迭代器。

这篇关于【只会for循环? 来看下, Nodejs中典型的5种循环方式】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996710

相关文章

虚拟机与物理机的文件共享方式

《虚拟机与物理机的文件共享方式》文章介绍了如何在KaliLinux虚拟机中实现物理机文件夹的直接挂载,以便在虚拟机中方便地读取和使用物理机上的文件,通过设置和配置,可以实现临时挂载和永久挂载,并提供... 目录虚拟机与物理机的文件共享1 虚拟机设置2 验证Kali下分享文件夹功能是否启用3 创建挂载目录4

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Mybatis官方生成器的使用方式

《Mybatis官方生成器的使用方式》本文详细介绍了MyBatisGenerator(MBG)的使用方法,通过实际代码示例展示了如何配置Maven插件来自动化生成MyBatis项目所需的实体类、Map... 目录1. MyBATis Generator 简介2. MyBatis Generator 的功能3

Python数据处理之导入导出Excel数据方式

《Python数据处理之导入导出Excel数据方式》Python是Excel数据处理的绝佳工具,通过Pandas和Openpyxl等库可以实现数据的导入、导出和自动化处理,从基础的数据读取和清洗到复杂... 目录python导入导出Excel数据开启数据之旅:为什么Python是Excel数据处理的最佳拍档

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

MYSQL行列转置方式

《MYSQL行列转置方式》本文介绍了如何使用MySQL和Navicat进行列转行操作,首先,创建了一个名为`grade`的表,并插入多条数据,然后,通过修改查询SQL语句,使用`CASE`和`IF`函... 目录mysql行列转置开始列转行之前的准备下面开始步入正题总结MYSQL行列转置环境准备:mysq

Linux(Centos7)安装Mysql/Redis/MinIO方式

《Linux(Centos7)安装Mysql/Redis/MinIO方式》文章总结:介绍了如何安装MySQL和Redis,以及如何配置它们为开机自启,还详细讲解了如何安装MinIO,包括配置Syste... 目录安装mysql安装Redis安装MinIO总结安装Mysql安装Redis搜索Red

Java文件上传的多种实现方式

《Java文件上传的多种实现方式》文章主要介绍了文件上传接收接口的使用方法,包括获取文件信息、创建文件夹、保存文件到本地的两种方法,以及如何使用Postman进行接口调用... 目录Java文件上传的多方式1.文件上传接收文件接口2.接口主要内容部分3.postman接口调用总结Java文件上传的多方式1