【只會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,如果想自定義遍歷邏輯還可以自定義迭代器。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/13437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/13437.shtml
英文地址,請注明出處:http://en.pswp.cn/web/13437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GPT-SoVITS語音克隆部署與使用

GPT-SoVITS是一款強大的少量樣本語音轉換與語音合成開源工具。當前&#xff0c;GPT-SoVITS實現了如下幾個方面的功能&#xff1a; 由參考音頻的情感、音色、語速控制合成音頻的情感、音色、語速可以少量語音微調訓練&#xff0c;也可不訓練直接推理可以跨語種生成&#xff0c;…

【AI】試用 ai 提取文章內容嘗試

電梯產業面臨這樣一個問題&#xff0c;因為太多的品牌&#xff0c;將近 400 多個&#xff0c;甚至有寶馬&#xff0c;奧迪&#xff0c;你敢相信&#xff0c;一家造汽車的造過電梯?不過好像想想也是&#xff0c;電梯是第二大交通工具&#xff0c;電梯從某種意義上來說&#xff…

無網環境禁止 WPS 提示登錄,且基本功能按鈕可用

目前 WPS 升級后&#xff0c;每次打開都會提示你登錄 WPS&#xff0c;并且在未登錄之前所有基本功能按鈕是置灰狀態&#xff0c;無法使用。 如此一來&#xff0c;在內網或無網環境&#xff0c;我們無法登陸 WPS &#xff0c;就給我們的使用帶來了極大的不便&#xff0c;那么有沒…

全網最全面的由淺到深的Kotlin基礎教程(七)

前言 本篇文章接著上一篇文章全網最全面的由淺到深的Kotlin基礎教程&#xff08;六&#xff09;繼續進階學習kotlin&#xff0c;建議看完上一篇文章&#xff0c;再來看本篇文章。本篇主要分析一些常用的kotlin函數源碼&#xff0c;以及用kotlin簡單實現Rxjava的幾個操作符。堅…

卡梅德生物噬菌體展示多肽庫

噬菌體展示多肽文庫在新藥發現領域展現出巨大的潛力和應用價值。卡梅德生物的噬菌體展示肽庫通過將大量肽序列插入到噬菌體基因組中&#xff0c;并在噬菌體表面展示這些肽&#xff0c;構建了一個多樣性的肽庫。 在新藥發現過程中&#xff0c;噬菌體展示多肽文庫可以用于篩選具有…

全志A133 android10 調試vibrator震動馬達

一&#xff0c;前提條件 全志使用的馬達配置為上電震動&#xff0c;下電停止&#xff0c;需測試硬件是否正常。馬達供電最好為獨立供電&#xff0c;避免干擾。 二&#xff0c;適配步驟 1. dts中增加馬達配置 motor_para {compatible "allwinner,sunxi-vibrator";…

java工廠模式示例代碼

工廠模式是一種創建型設計模式&#xff0c;它提供了一種將對象的創建與使用分離的方法。在工廠模式中&#xff0c;我們通過工廠類來創建對象&#xff0c;而不是直接在客戶端代碼中使用 new 關鍵字來創建對象。以下是一個簡單的Java工廠模式示例代碼&#xff1a; 產品接口 首先…

BGP實驗:聯邦和發射器實驗

BGP實驗&#xff1a;聯邦和發射器實驗 一、實驗拓撲 二、實驗要求及分析 實驗要求&#xff1a; 1、AS1存在兩個環回&#xff0c;一個地址為192.168.1.0/24&#xff0c;該地址不能再任何協議中宣告&#xff1b; ? AS3存在兩個環回&#xff0c;一個地址為192.168.2.0/24&…

解決ModuleNotFoundError: No module named ‘open_clip‘問題

在使用stable diffusion大模型時&#xff0c;添加一些模型后啟動df頁面報錯&#xff1a;ModuleNotFoundError: No module named open_clip 使用 pip install open_clip命令下載失敗&#xff0c;報錯&#xff1a; Looking in indexes: https://mirrors.aliyun.com/pypi/simple…

Redis【B站面試題】

前言 2023-07-27 22:44:59 出自B站 灰灰的Java面試 Redis Redis為什么快&#xff1f; 1.純內存KV操作 Redis的操作都是基于內存的&#xff0c;CPU不是 Redis性能瓶頸,&#xff0c;Redis的瓶頸是機器內存和網絡帶寬。 在計算機的世界中&#xff0c;CPU的速度是遠大于內存的速…

Java技術深度解析:高級面試問題與精粹答案(二)

Java 面試問題及答案 1. 什么是Java的垃圾回收機制&#xff1f;它是如何工作的&#xff1f; 答案&#xff1a; Java的垃圾回收機制&#xff08;Garbage Collection&#xff0c;GC&#xff09;是Java運行時環境&#xff08;JRE&#xff09;中的一個功能&#xff0c;用于自動管…

[CocosCreator]Android的增加AndroidX的動態權限

歡迎喜歡或者從事CocosCreator開發的小伙伴請加入我的大家庭CocosCreator游戲開發Q群:26855530 1.首先增加你需要申請的權限,修改:AndroidManifest.xml: <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas…

深度學習之基于TensorFlow人臉表情識別

歡迎大家點贊、收藏、關注、評論啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代碼。 文章目錄 一項目簡介 二、功能三、系統四. 總結 一項目簡介 一、項目背景 人臉表情識別是計算機視覺領域的重要研究方向之一&#xff0c;它在人機交互、情感分析、安全監控等領…

代碼隨想錄35期Day48-Java

Day48題目 LeetCode121買股票的最佳時機1 核心思想:可以使用貪心,選擇左邊最小的和右邊最大的,也可以動態規劃,需要保存是否持有股票的狀態,dp[i][0]表示第i天,不持有股票,dp[i][1]表示第i天持有 class Solution {public int maxProfit(int[] prices) {int[][] dp new int[…

python中異步io簡單樣例

目錄 一、異步IO簡單說明 二、代碼樣例 一、異步IO簡單說明 當進行異步 IO 操作時&#xff0c;程序不會因為等待 IO 操作完成而阻塞&#xff0c;而是可以在等待過程中繼續執行其他任務&#xff0c;從而提高了程序的并發性能和響應速度。這是因為異步 IO 操作利用了操作系統底層…

Java 變量和作用域:理解變量的聲明、初始化及其作用域

在Java編程語言中&#xff0c;變量和作用域是兩個核心概念。理解變量的聲明、初始化以及它們的作用域對于編寫健壯且高效的代碼至關重要。 變量的聲明與初始化 變量的聲明 在Java中&#xff0c;變量的聲明指的是定義變量的名稱和類型。在Java中&#xff0c;變量聲明的一般語…

ESP32開發——關于ESP32TimerInterrupt庫的例程分析

最近在學習嵌入式開發的內容&#xff0c;正好有一個開發任務涉及到對于定時器中斷的使用&#xff0c;今天正好找到了這個相關的庫&#xff1a;ESP32TimerInterrupt ESP32TimerInterrupt庫的下載鏈接&#xff08;適用于Arduino IDE&#xff09; 進入到這個地址后直接下載該庫的…

ubuntu使用記錄——如何使用wireshark網絡抓包工具進行檢測速騰激光雷達的ip和端口號

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言wireshark網絡抓包工具1.wireshark的安裝2.wireshark的使用3.更改雷達ip 總結 前言 Wireshark是一款備受贊譽的開源網絡協議分析軟件&#xff0c;其功能之強大…

簡述MyBatis中#{}引用和${}引用的區別

各位大佬光臨寒舍&#xff0c;希望各位能賞臉給個三連&#xff0c;謝謝各位大佬了&#xff01;&#xff01;&#xff01; 目錄 1.有無預編譯 優點 缺點 2.SQL執行的快慢 3.能否被SQL注入 4.參數輸入方式 5.總結 1.有無預編譯 #{}是有預編譯的而${}是沒有預編譯的&…