NodeJs - for循环的几种遍历方式

这篇具有很好参考价值的文章主要介绍了NodeJs - for循环的几种遍历方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. for循环的几种遍历方式

我们先来看下for循环的4种不同遍历方式:

const arr = [10,20,30,40,50];

for (let i = 0; i < arr.length; i++) {
    console.log(arr[i])
}

arr.forEach((num,index)=> {
    console.log(num,index)
});

for (const key in arr) {
    if (Object.hasOwnProperty.call(arr, key)) {
        console.log(arr[key])
    }
}

for (const num of arr) {
    console.log(num)
}

接下来就从几个不同的方面来说下这四种打印方式的区别。

1.1 遍历的目标不一样

遍历的目标:

  • 普通的for循环:每层遍历需要通过下标来获取数组元素。
  • forEach:每层遍历可以直接拿到数组元素的值以及对应的下标
  • for-in:每层遍历需要根据数组对象的键,来获得对应的值
  • for-of:没层遍历可以直接拿到数组元素的值

我们来细说一下for-in方式,我们看下下面这段代码打印出什么东西。

// 数组就是一个对象
const arr = [10, 22, 33, 44, 55];
// 对象可以通过.xxx的方式直接赋值一个属性
// 如果是普通的数组元素,那么对应的key就是数组的下标。
for (const key in arr) {
    if (Object.hasOwnProperty.call(arr, key)) {
        console.log('Key: ' + key, ', Value: ' + arr[key])
    }
}

结果如下:
NodeJs - for循环的几种遍历方式

1.2 空属性的遍历

const arr = [10, , 55];
for (let i = 0; i < arr.length; i++) {
    console.log(arr[i])
}
console.log('*********************************************')
arr.forEach(num => {
    console.log(num)
});
console.log('*********************************************')
for (const key in arr) {
    if (Object.hasOwnProperty.call(arr, key)) {
        console.log(arr[key])
    }
}
console.log('*********************************************')
for (const num of arr) {
    console.log(num)
}

输出结果如下:
NodeJs - for循环的几种遍历方式
结论如下:

  • 会跳过空值:普通的for循环,for-of
  • 不会跳过空值: forEachfor-in

1.3 异步的调用

我们先来写个简单的异步函数:

async function asyncMethod(num) {
    setTimeout(() => {
        console.log('hello')
    }, 1000);
    return num
}

我们来看下下面的案例:

for循环调用案例:

const arr = [1, 2, 3];

async function test() {
    const list = [];
    for (let i = 0; i < arr.length; i++) {
        const num = await asyncMethod(arr[i]);
        list.push(num);
    }
    console.log(list);
    return list;
}
{
    (async () => {
        await test();
    })()
}

结果如下:
NodeJs - for循环的几种遍历方式


forEach案例:

const arr = [1, 2, 3];

async function test2() {
    const list = [];
    arr.forEach(async (num) => {
        const res = await asyncMethod(num);
        list.push(res);
    })
    console.log(list);
    return list;
}

{
    (async () => {
        await test2();
    })()
}

NodeJs - for循环的几种遍历方式


for-in案例:

const arr = [1, 2, 3];

async function test3() {
    const list = [];
    for (const key in arr) {
        const num = await asyncMethod(arr[key]);
        list.push(num);
    }
    console.log(list);
    return list;
}

{
    (async () => {
        await test3();
    })()
}

结果如下:
NodeJs - for循环的几种遍历方式


for-of案例:

const arr = [1, 2, 3];

async function test4() {
    const list = [];
    for (const num of arr) {
        const res = await asyncMethod(num);
        list.push(res);
    }
    console.log(list);
    return list;
}

{
    (async () => {
        await test4();
    })()
}

结果如下:
NodeJs - for循环的几种遍历方式

可看出,只有forEach这种写法,在同一个异步函数体内,无法同步获取到异步结果。 意思就是:

async function test(){
	arr.forEach(async () => {
        const 异步任务结果= await 异步任务();
    })
    这里想拿到上面forEach循环里面做的异步结果是不行的
    doSomething()
}

但是,如果在函数题外面获取异步结果,例如:

async function test2() {
    const list = [];
    arr.forEach(async (num) => {
        const res = await asyncMethod(num);
        list.push(res);
    })
    return list;
}

{
    (async () => {
        const list = await test2();
        console.log(list)
    })()
}

此时无论哪一种写法,都是能获取到完整的list的:
NodeJs - for循环的几种遍历方式

二. 总结

从遍历的目标来看:

  • for:通过数组下标获取元素。
  • forEach:可直接获取元素以及对应的下标。
  • for-in:通过数组的键获取对应的值。(value = arr.key
  • for-of:可直接获取元素。

从空属性的遍历来看:数组:arr = [1 , 2, ,3](注意有两个逗号)

  • for:跳过空值。
  • forEach:不会跳过空值,会打印出undefined
  • for-in:不会跳过空值,会打印出undefined
  • for-of:跳过空值。

从异步的结果的获取来看:

  • forEach无法在函数体内,获取forEach里面的异步任务结果。函数体外可以。

  • for:可以在函数体内,获取forEach里面的异步任务结果。函数体外也可以。

  • for-in:可以在函数体内,获取forEach里面的异步任务结果。函数体外也可以。

  • for-of:可以在函数体内,获取forEach里面的异步任务结果。函数体外也可以。文章来源地址https://www.toymoban.com/news/detail-489773.html

到了这里,关于NodeJs - for循环的几种遍历方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nodejs处理图片的几种方法,使用sharp,jimp,webconvert

    Sharp是一款快速高效的Node.js图片处理库,支持图片格式转换、尺寸调整、压缩、裁剪、旋转、水印等功能。以下是使用Sharp库的基本步骤: 安装Sharp库可以使用npm命令: 在代码中调用Sharp库,可以先引入Sharp库: 利用Sharp库,可以将图片格式转换为其它格式,例如将JPEG图片转

    2024年02月05日
    浏览(33)
  • 【初阶数据结构】二叉树的几种遍历详解

    君兮_的个人主页 勤时当勉励 岁月不待人 C/C++ 游戏开发 Hello,米娜桑们,这里是君兮_,有了我们之前介绍的树结构与二叉树的基础概念,今天我们来讲讲对二叉树的基本使用——遍历 我们自己先简单链式连接几个结点来创建一个二叉树方便我们之后对遍历的讲解 好了,有了

    2024年02月08日
    浏览(34)
  • 【JavaScript保姆级教程】for循环与for循环遍历数组

    JavaScript是一门强大的编程语言,它允许开发者有效地控制程序的流程。在JavaScript中,有多种循环结构可供选择,其中for循环是最常用的之一。本教程将深入探讨for循环的基本概念,提供示例代码,并展示如何使用for循环来遍历数组。同时,我们还将介绍如何在for循环中嵌套

    2024年02月06日
    浏览(36)
  • js中断 forEach 循环的几种方法

    1、使用 Array.prototype.some() 方法代替 some() 方法会在找到第一个符合条件的元素时停止循环。 例如: 上述代码会在找到第一个符合条件的元素(即 3)时停止循环。 2、使用 Array.prototype.every() 方法代替 上述代码会在找到第一个符合条件的元素(即 3)时停止循环。 请注意,该

    2024年02月14日
    浏览(35)
  • 抛弃for循环遍历list

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。 filter filter:过滤,就是过滤器,符合条件的通过,不符合条件的过滤掉 map map:映射,

    2024年02月20日
    浏览(27)
  • Golang for循环遍历小坑

    循环:让程序多次执行相同的代码块 for循环是Go语言中唯一一个循环结构 for循环经典语法 先执行表达式1 执行表达式2判断是否成立,如果成立执行循环体 循环体执行完成后,执行表达式3 再次执行表达式2,判断是否成立. for循环用的最多的地方就是遍历数组或切片等 经典for循环结

    2024年02月03日
    浏览(30)
  • Mysql实现for循环遍历

    num = 1 ids =(sourceSql: select id from table) for id in ids { targetSql: update table2 set age = num where key_id = id; }; num ++; 这是大概逻辑,主要是通过一段sql查出数据源,然后再遍历查出来的集合做一些其他sql操作, 中间还需要一些自增的变量。 🆗,接下来就是具体sql实现,我们是通过mys

    2024年02月16日
    浏览(30)
  • 微信小程序——for循环遍历

    以components中创建的ForComp 和pages中的features为例 features.json  features.wxml ForComp.js ForComp.wxml 注意绿色框出的ws:key=“”,可以参考  列表渲染 | 微信开放文档 (qq.com)  简单来说就是,当需要遍历的列表是由单个字符串、布尔值等构成时候,使用*this即可。但是当列表是由数组组

    2024年02月08日
    浏览(22)
  • 【笔记】Java中for循环遍历删除操作

    在Java中,有些场景需要遍历集合中的元素,然后根据条件进行删除元素的操作。如果使用传统的for循环遍历方式来删除元素,很可能出错或发生意想不到的问题。推荐使用 迭代器iterator 完成 1. 推荐使用 迭代器方式****删除 阿里规约:【强制】不要在 foreach 循环里进行元素的

    2024年02月11日
    浏览(29)
  • C#面:列出 .NET 中的几种循环方法,并指出它们的不同

    for 循环是一种最常见的循环方法,它通过指定循环的起始值、终止条件和每次迭代的步长来控制循环。 for 循环适用于已知循环次数的情况。 while循环是一种在循环开始之前先判断条件是否满足的循环方法。只有当条件为真时,循环体才会执行。while循环适用于未知循环次数

    2024年02月20日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包