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

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

作者: wn777 | 来源:发表于2024-05-22 20:18 被阅读0次

    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);
    });
    

    它提供了元素值和索引两个参数,但不能使用 breakcontinue,也不能通过 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种循环方式】

          本文链接:https://www.haomeiwen.com/subject/mwizfjtx.html