js中forEach的用法、forEach如何跳出迴圈、forEach與for之間的區別

来源:https://www.cnblogs.com/IwishIcould/archive/2022/03/28/16062247.html
-Advertisement-
Play Games

定義和用法 forEach() 調用數組的每個元素,並將元素傳遞給回調函數。 註意: forEach() 對於空數組是不會執行回調函數的。 用法: array.forEach(function(currentValue, index, arr), thisValue) 1==> currentVal ...


定義和用法

forEach() 調用數組的每個元素,並將元素傳遞給回調函數。
註意: forEach() 對於空數組是不會執行回調函數的。

用法:
array.forEach(function(currentValue, index, arr), thisValue)
1==> currentValue	必需。當前元素
2==> index	可選。當前元素的索引值,是數字類型的
3==> arr	可選。當前元素所屬的數組對象
4==> 可選。傳遞給函數的值一般用 "this" 值。
如果這個參數為空, "undefined" 會傳遞給 "this" 值

forEach 的註意點

forEach() 本身是不支持的 continue 與 break 語句的。
我們可以通 return 語句實現 continue 關鍵字的效果:

運用的場景(計算數字之和)

1.計算數組所有元素相加的總和:
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let sum = 0;
arr.forEach((currentIndex, index, curArr) => {
    sum += currentIndex
        // sum=sum+currentIndex
})
console.log('之和是', sum);

運用的場景(給原始數組新增key值)

//給原始數組的每一項新增一個屬性值
let arr = [{
  id: '001',
  name: '張三1'
}, {
  id: '002',
  name: '張三2'
}, {
  id: '003',
  name: '張三2'
}];
//給原始數組的每一項新增一個屬性值
arr.forEach((item, index) => {
  item['addAttrs'] = ''
})
console.log('arr', arr);

--使用for of來出處理--
for (let item of arr) {
    item['index'] = ''
}
console.log('arr', arr);

forEach 跳出當前的迴圈 return

//內容為3,不遍歷該項
var arr = [1, 2, 3];
arr.forEach(function(item) {
    if (item === 3) {
        return;
    }
    console.log(item);
});

forEach結合try跳出整個迴圈

//找到id為002,然後終止整個迴圈,返回當前這一項的值。
//使用 try-catch完成的
代碼如下

let arr = [{
  id: '001',
  name: '張三1'
}, {
  id: '002',
  name: '張三2'
}, {
  id: '003',
  name: '張三2'
}];

// 使用forEach跳出整個迴圈,使用rty-catch
function useForeach(Arr) {
  let obj = {}
  try {
    Arr.forEach(function(item) {
      if (item.id == '002') {
        // 找到目標項,賦值。然後拋出異常
        obj = item
        throw new Error('return false')
      }
    });
  } catch (e) {
    // 返回id===002的這一項的數據
    return obj
  }
}
console.log(useForeach(arr))

forEach 與for迴圈的區別 【面試題】

1==> for可以用continue跳過當前迴圈中的一個迭代,forEach 用continue會報錯。但是可以使用return來跳出當前的迴圈
2==> for可以使用break來跳出整個迴圈,forEach正常情況無法跳出整個迴圈。
如果面試官問:如果非要跳出forEach中的迴圈,可以拋出一個異常來處理

遇見問題,這是你成長的機會,如果你能夠解決,這就是收穫。

作者:明月人倚樓
出處:https://www.cnblogs.com/IwishIcould/

想問問題,打賞了卑微的博主,求求你備註一下的扣扣或者微信;這樣我好聯繫你;(っ•̀ω•́)っ✎⁾⁾!

如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,或者關註博主,在此感謝!

萬水千山總是情,打賞5毛買辣條行不行,所以如果你心情還比較高興,也是可以掃碼打賞博主(っ•̀ω•́)っ✎⁾⁾!

想問問題,打賞了卑微的博主,求求你備註一下的扣扣或者微信;這樣我好聯繫你;(っ•̀ω•́)っ✎⁾⁾!

支付寶 微信 本文版權歸作者所有,歡迎轉載,未經作者同意須保留此段聲明,在文章頁面明顯位置給出原文連接
如果文中有什麼錯誤,歡迎指出。以免更多的人被誤導。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Linux 0.11源碼閱讀筆記-總覽 閱讀源碼的目的 加深對Linux操作系統的瞭解,瞭解Linux操作系統基本架構,熟悉進程管理、記憶體管理等主要模塊知識。 通過閱讀教複雜的代碼,鍛煉自己複雜項目代碼的閱讀能力。對於一般簡短的程式,可以從main函數逐行閱讀理解;對於複雜的項目,只能在瞭解源碼主要 ...
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 1、簡介 官網:https://www.rabbitmq.com/ RabbitMQ是一個開源的遵循AMQP協議實現的基於Erlang語言編寫,支持多種客戶端(語言),用於在分散式系統中存儲消息,轉發消息,具有高可用高可擴性,易用性等特征。 2、 ...
  • 本期,我們將為大家帶來HDF驅動框架中USB DDK的解析與指導。 ...
  • 一、藍牙模式HID與BLE 當掃碼槍與手機連接時,通常採用的是藍牙HID(Human Interface Device)模式。本質上是一個把掃碼槍作為一個硬體鍵盤,按照鍵盤協議把掃碼後的結果逐個輸入到對應的控制項上。 優點:無需開發集成,配對就可以立即作為鍵盤輸入使用。可以使用輸入框等組件直接接收掃碼 ...
  • 華為 AppLinking 服務,是一項支持通過跨平臺使用的深度鏈接,可以支持通過鏈接拉起指定頁面,並且傳遞 DeepLink 數據。更加重要的是,AppLinking 支持在應用未安裝的情況下,自動拉起應用市場的應用詳情頁,可以很好的覆蓋應用未安裝的情況。 本帖主要介紹在 Android 項目中, ...
  • 在移動端閱讀資訊時,人們對高解析度、高質量的圖像要求越來越高。但受限於網路流量、存儲、圖片源等諸多因素,用戶無法便捷獲得高質量圖片。移動端顯示設備的高解析度圖片獲得問題亟待解決。不久前,HMS Core新聞Demo App針對新聞垂域的閱讀體驗做了一系列更新優化,其中就包括圖像超分。 圖像超解析度( ...
  • 3月15日新增“1860+1194”,全國進入了抗疫關鍵時期。響應政策多地採取了社會面清零策略。 3月14日零點,深圳按下了暫停鍵。 應疫情防控要求,深圳全市暫停生產經營活動,嚴格實行7天封閉式管理。消息一經發佈,3.13日當晚,全深圳打工人連夜回公司取電腦。衝上了熱搜。“上班帶棉被,下班帶電腦”深 ...
  • 一、什麼是對象? 對象指一個具體的事物,泛指的不算對象,對像是一組無序的相關屬性和方法的集合;屬性是特征常用名詞來表示,方法是行為常用動詞來表示。 二、為什麼需要對象? 當我們保存一個值時,可以使用變數,保存多個值時,可以使用數組;當我們需要保存很多完整、複雜的信息時,我們就會需要對象。 三、創建對 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...