JS中reduce方法

JavaScript 中的?reduce?方法是一個非常強大的數組方法,它允許你對數組中的所有元素執行一個“reducer”函數,從而將數組“減少”到一個單一的值。以下是?reduce?方法的詳細介紹:

語法

array.reduce(function(accumulator, currentValue, currentIndex, array) {// ... 執行操作 ...
}, initialValue);

或者使用箭頭函數:

array.reduce((accumulator, currentValue, currentIndex, array) => {// ... 執行操作 ...
}, initialValue);

參數

  • callback: 執行數組中每個值 (如果沒有提供?initialValue?則第一個值除外) 的函數,包含四個參數:
    • accumulator: 累計器累計回調的返回值; 它是上一次調用回調時返回的值,或者是提供的?initialValue(如果有提供)。
    • currentValue: 數組中正在處理的當前元素。
    • currentIndex(可選): 數組中正在處理的當前元素的索引。如果提供了?initialValue,則起始索引為 0,否則為 1。
    • array(可選): 調用?reduce?的數組。
  • initialValue(可選): 用作第一個調用?callback?函數時的第一個參數的值。如果沒有提供初始值,則將數組中的第一個元素作為累加器的初始值,并且從第二個元素開始迭代。

描述

reduce?方法對數組中的每個元素執行一個由你提供的“reducer”回調函數(升序執行),將其結果“縮減”為單個返回值。

返回值

函數累計處理的結果。

示例

計算數組所有元素的總和
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 輸出: 15
將數組元素連接成一個字符串
const words = ['Hello', 'World'];
const sentence = words.reduce((accumulator, currentValue) => accumulator + ' ' + currentValue, '');
console.log(sentence); // 輸出: "Hello World"
將二維數組轉換為一維數組
const arrays = [[1, 2, 3], [4, 5], [6]];
const flattenedArray = arrays.reduce((accumulator, currentValue) => accumulator.concat(currentValue), []);
console.log(flattenedArray); // 輸出: [1, 2, 3, 4, 5, 6]
計算對象中屬性的出現次數
const names = ['Alice', 'Bob', 'Tiff', 'Bruce', 'Alice'];
const countedNames = names.reduce((allNames, name) => {if (name in allNames) {allNames[name]++;} else {allNames[name] = 1;}return allNames;
}, {});
console.log(countedNames); // 輸出: { 'Alice': 2, 'Bob': 1, 'Tiff': 1, 'Bruce': 1 }

注意事項

  • 如果數組為空且沒有提供?initialValuereduce?方法將拋出?TypeError
  • 如果數組僅有一個元素(無論位置如何)并且沒有提供?initialValue,或者如果提供了?initialValue?但是數組為空,那么將返回唯一值,不調用?callback

reduce?方法是高度靈活的,可以根據需要執行幾乎任何類型的數組元素聚合操作。

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

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

相關文章

印閃網絡:阿里云數據庫MongoDB版助力金融科技出海企業降本增效

客戶背景 上海印閃網絡科技有限公司,于2017年1月成立,投資方包括紅杉資本等多家國際知名風投公司。公司業務聚焦東南亞普惠金融,常年穩居行業頭部。創始團隊來自騰訊,中國團隊主要由運營、風控及產研人員組成,核心成員…

【后端面試總結】HTTPS工作原理詳解

引言 在現代網絡通信中,數據的安全性至關重要。HTTP(Hypertext Transfer Protocol)作為互聯網上傳輸數據的協議,雖然應用廣泛,但其數據以明文形式傳輸,存在被竊取和篡改的風險。為此,HTTPS&…

51c嵌入式~單片機~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的電平信號的MCU怎么通信? 下面這個“電平轉換”電路,理解后令人心情愉快。電路設計其實也可以很有趣。 先說一說這個電路的用途:當兩個MCU在不同的工作電壓下工作&a…

Java 基礎知識——part 1

1.目前Java平臺有三種版本: Java SE:用于開發桌面應用程序 Java EE:用于編寫企業級應用程序 Java ME:用于開發設備應用程序 2.Applet可嵌入Web文檔的一種小型程序,因網絡傳輸速度關系都很短小 3.Appilication&…

【云計算】虛擬化技術

目錄 1. 虛擬化技術在云計算中的那些地方發揮了關鍵作用? 2. 比較VMare,Xen等虛擬化產品的關鍵技術,以及對云計算技術提供的支持? 3. 服務器虛擬化,存儲虛擬化和網絡虛擬化都有哪些實現方式? 4. 討論桌面…

力扣題目 - 2931.購買物品的最大開銷

題目 還需要你前往力扣官網查看詳細的題目要求 地址 思路 這邊需要你去力扣官網詳細查看題目看了題目提供的示例 已經有了解法, 先把values轉成1維數組,排序之后進行累加即可 代碼 var maxSpending function (values) {let list values.flat();list.sort((a, b) > a - …

嵌入式驅動開發詳解6(RTC)

文章目錄 前言RTC簡介RTC驅動分析RTC驅動框架RTC驅動實現 RTC應用后續 前言 實時時鐘是很常用的一個外設,通過實時時鐘我們就可以知道年、月、日和時間等信息。 因此在需要記錄時間的場合就需要實時時鐘,可以使用專用的實時時鐘芯片來完成此功能&#x…

單片機:實現跑馬燈(附帶源碼)

單片機實現跑馬燈 跑馬燈(也稱作流水燈)是一種常見的電子效果,通過依次點亮和熄滅多個LED燈,模擬出一個燈光流動的效果。跑馬燈常見于裝飾性電子產品中,也是一種展示單片機控制多路輸出的基礎應用。 在本項目中&…

力扣題目 - 935. 騎士撥號器

題目 還需要你前往力扣官網查看詳細的題目要求 地址 1.象棋騎士有一個獨特的移動方式,它可以垂直移動兩個方格,水平移動一個方格,或者水平移動兩個方格,垂直移動一個方格(兩者都形成一個 L 的形狀)。2.象棋騎士可能的移動方式如下…

傳輸層7——TCP擁塞控制(重點!!!)

目錄 一、認識擁塞控制 1、什么叫做擁塞? 2、擁塞的特點 3、流量控制 VS 擁塞控制 二、TCP如何防止擁塞? 1、慢開始 2、擁塞避免 3、3重復確認 和 快重傳算法 4、快恢復算法 5、總結 三、主動隊列管理AQM 1、技術背景 2、AQM思 想和實現策略…

PostgreSQL/PostGIS中提升空間查詢(分析)性能(效率)的一些方法

目錄 1. 使用適當的索引 1.1 索引類型 1.2 分析查詢計劃 1.3 覆蓋索引 1.4 復合索引 1.5 維護索引 1.6 刪除不必要的索引 1.7 使用適當的數據類型 2. 建立分區表 2.1 分區表的基本概念 2.2 創建分區表的步驟 2.3 空間數據的分區 2.4 分區表優點 3. 簡化幾何形狀 …

輪播(css+js)

目錄 1.實現效果 2.基礎代碼演示 2.1js代碼 2.1css樣式 2.3實現效果 3.實現點擊切換 3.1給button添加點擊事件 3.2效果圖如下 3.3發現問題 3.3.1不循環 3.3.2循環 1.實現效果 2.基礎代碼演示 2.1js代碼 <div class"out-box"><div class"tes…

簡單的JavaWeb開發示例

以下是一個簡單的JavaWeb開發示例&#xff0c;包含一個使用Servlet和JSP實現的簡單網頁計數器功能&#xff0c;展示了基本的JavaWeb項目結構以及相關代碼邏輯。 1. 項目搭建與環境準備 開發工具&#xff1a;可以使用Eclipse、IntelliJ IDEA等集成開發環境&#xff0c;這里以I…

fastadmin框架同時使用 阿里云oss和阿里云點播

背景 項目的實際需求中既要用到阿里云oss產品又用到阿里云點播系統&#xff0c;實現完美的統一。設置兩個地址downUrl&#xff0c;thirdCode。分別代表阿里云oss上傳路徑和阿里云點播系統vId。 實現 默認框架你已經集成好阿里云oss集成工作&#xff0c;前端html頁面實現 <…

優秀的3d建模是數據可視化的視覺核心1

增強視覺效果&#xff1a;3D建模通過創建三維立體圖像&#xff0c;為觀眾提供了更為真實和直觀的視覺體驗。相比于傳統的二維圖表和圖形&#xff0c;3D模型能夠更準確地展示復雜數據之間的空間關系&#xff0c;使數據可視化大屏上的信息更加生動和易于理解。 提升信息傳達效率&…

flink sink kafka的事務提交現象猜想

現象 查看flink源碼時 sink kafka有事務提交機制&#xff0c;查看源碼發現是使用兩階段提交策略&#xff0c;而事務提交是checkpoint完成后才執行&#xff0c;那么如果checkpoint設置間隔時間比較長時&#xff0c;事務未提交之前&#xff0c;后端應該消費不到數據&#xff0c…

leetcode 3224. 使差值相等的最少數組改動次數

題目鏈接&#xff1a;3224. 使差值相等的最少數組改動次數 題目&#xff1a; 給你一個長度為 n 的整數數組 nums &#xff0c;n 是偶數 &#xff0c;同時給你一個整數 k 。 你可以對數組進行一些操作。每次操作中&#xff0c;你可以將數組中任一元素替換為 0 到 k 之間的任一…

Y3編輯器文檔4:觸發器1(對話、裝備、特效、行為樹、排行榜、不同步問題)

文章目錄 一、觸發器簡介1.1 觸發器界面1.2 ECA語句編輯及快捷鍵1.3 參數設置1.4 變量設置1.5 實體觸發器1.6 函數庫與觸發器復用 二、觸發器的多層結構2.1 子觸發器&#xff08;在游戲內對新的事件進行注冊&#xff09;2.2 觸發器變量作用域2.3 復合條件2.4 循環2.5 計時器2.6…

前端WebSocket應用——聊天實時通信的基本配置

使用 WebSocket 實現實時通信的 Vue 應用 前言1. WebSocketService 類 1.1 類屬性1.2 構造函數和連接初始化1.3 WebSocket 連接1.4 事件處理方法1.5 發送和關閉 WebSocket 消息1.6 狀態查詢與回調注冊1.7 完整代碼 2. 在 Vue 組件中使用 WebSocketService 2.1 定義 WebSocket …

【開源】A065—基于SpringBoot的庫存管理系統的設計與實現

&#x1f64a;作者簡介&#xff1a;在校研究生&#xff0c;擁有計算機專業的研究生開發團隊&#xff0c;分享技術代碼幫助學生學習&#xff0c;獨立完成自己的網站項目。 代碼可以查看項目鏈接獲取??&#xff0c;記得注明來意哦~&#x1f339; 贈送計算機畢業設計600個選題ex…