欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中reduce()的5個基本用法示例

 更新時間:2020年07月19日 08:57:02   作者:前端全棧開發(fā)者  
這篇文章主要給大家介紹了關于JavaScript中reduce()的5個基本用法示例,文中通過示例代碼以及圖文介紹的非常詳細,對大家學習或者使用js具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧

前言

reduce()方法可以搞定的東西,for循環(huán),或者forEach方法有時候也可以搞定,那為啥要用reduce()?這個問題,之前我也想過,要說原因還真找不到,唯一能找到的是:通往成功的道路有很多,但是總有一條路是最捷徑的,亦或許reduce()逼格更高...

語法

arr.reduce(callback,[initialValue])

reduce()方法對數(shù)組中的每一個元素執(zhí)行一個reducer函數(shù)(由你提供),從而得到一個單一的輸出值。

reduce() 方法將一個數(shù)組中的所有元素還原成一個單一的輸出值,輸出值可以是數(shù)字、對象或字符串。 reduce() 方法有兩個參數(shù),第一個是 回調函數(shù) ,第二個是 初始值 。

回調函數(shù)

回調函數(shù)在數(shù)組的每個元素上執(zhí)行?;卣{函數(shù)的返回值是累加結果,并作為下一次調用回調函數(shù)的參數(shù)提供?;卣{函數(shù)帶有四個參數(shù)。

  • Accumulator(累加器)——累加器累加回調函數(shù)的返回值。
  • Current Value(當前值)——處理數(shù)組的當前元素。
  • Current Index(當前索引)——處理數(shù)組當前元素的索引。
  • Source Array(源數(shù)組)

Current Index 和 Source Array 是可選的。

初始值

如果指定了初始值,則將累加器設置為 initialValue 作為初始元素。否則,將累加器設置為數(shù)組的第一個元素作為初始元素。

arr.reduce(callback(accumulator, currentValue[,index[,array]])[, initialValue])

在下面的代碼片段中,第一個累加器( accumulator )被分配了初始值0。 currentValue 是正在處理的 numbersArr 數(shù)組的元素。在這里, currentValue 被添加到累加器,在下次調用回調函數(shù)時,會將返回值作為參數(shù)提供。

const numbersArr = [67, 90, 100, 37, 60];

const total = numbersArr.reduce(function(accumulator, currentValue){
 console.log("accumulator is " + accumulator + " current value is " + currentValue);
 return accumulator + currentValue;
}, 0);

console.log("total : "+ total);

輸出

accumulator is 0 current value is 67
accumulator is 67 current value is 90
accumulator is 157 current value is 100
accumulator is 257 current value is 37
accumulator is 294 current value is 60
total : 354

JavaScript reduce用例

1.對數(shù)組的所有值求和

在下面的代碼中, studentResult 數(shù)組具有5個數(shù)字。使用 reduce() 方法,將數(shù)組減少為單個值,該值將 studentResult 數(shù)組的所有值和結果分配給 total 。

const studentResult = [67, 90, 100, 37, 60];

const total = studentResult.reduce((accumulator, currentValue) => accumulator +currentValue, 0);

console.log(total); // 354

2.對象數(shù)組中的數(shù)值之和

通常,我們從后端獲取數(shù)據(jù)作為對象數(shù)組,因此, reduce() 方法有助于管理我們的前端邏輯。在下面的代碼中, studentResult 對象數(shù)組有三個科目,這里, currentValue.marks 取了 studentResult 對象數(shù)組中每個科目的分數(shù)。

const studentResult = [
 { subject: '數(shù)學', marks: 78 },
 { subject: '物理', marks: 80 },
 { subject: '化學', marks: 93 }
];

const total = studentResult.reduce((accumulator, currentValue) => accumulator + currentValue.marks, 0);

console.log(total); // 251

3.展平數(shù)組

“展平數(shù)組”是指將多維數(shù)組轉換為一維。在下面的代碼中, twoDArr 2維數(shù)組被轉換為 oneDArr 一維數(shù)組。此處,第一個 [1,2] 數(shù)組分配給累加器 accumulator ,然后 twoDArr 數(shù)組的其余每個元素都連接到累加器。

const twoDArr = [ [1,2], [3,4], [5,6], [7,8] , [9,10] ];

const oneDArr = twoDArr.reduce((accumulator, currentValue) => accumulator.concat(currentValue));

console.log(oneDArr);
// [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]

4.按屬性分組對象

根據(jù)對象的屬性,我們可以使用 reduce() 方法將對象數(shù)組分為幾組。通過下面的代碼片段,你可以清楚地理解這個概念。這里, result 對象數(shù)組有五個對象,每個對象都有 subject 和 marks 屬性。如果分數(shù)大于或等于50,則該主題通過,否則,主題失敗。 reduce() 用于將結果分組為通過和失敗。首先,將 initialValue 分配給累加器,然后 push() 方法在檢查條件之后將當前對象添加到 pass 和 fail 屬性中作為對象數(shù)組。

const result = [
 {subject: '物理', marks: 41},
 {subject: '化學', marks: 59},
 {subject: '高等數(shù)學', marks: 36},
 {subject: '應用數(shù)學', marks: 90},
 {subject: '英語', marks: 64},
];

let initialValue = {
 pass: [],
 fail: []
}

const groupedResult = result.reduce((accumulator, current) => {
 (current.marks >= 50) ? accumulator.pass.push(current) : accumulator.fail.push(current);
 return accumulator;
}, initialValue);

console.log(groupedResult);

輸出

{
 pass: [
  { subject: ‘化學', marks: 59 },
  { subject: ‘應用數(shù)學', marks: 90 },
  { subject: ‘英語', marks: 64 }
 ],
 fail: [
  { subject: ‘物理', marks: 41 },
  { subject: ‘高等數(shù)學', marks: 36 }
 ]
}

5.刪除數(shù)組中的重復項

在下面的代碼片段中,刪除了 plicatedArr 數(shù)組中的重復項。首先,將一個空數(shù)組分配給累加器作為初始值。

accumulator.includes() 檢查 duplicatedArr 數(shù)組的每個元素是否已經(jīng)在累加器中可用。如果 currentValue 在累加器中不可用,則使用 push() 將其添加。

const duplicatedsArr = [1, 5, 6, 5, 7, 1, 6, 8, 9, 7];

const removeDuplicatedArr = duplicatedsArr.reduce((accumulator, currentValue) => {
 if(!accumulator.includes(currentValue)){
 accumulator.push(currentValue);
 }
 return accumulator;
}, []);

console.log(removeDuplicatedArr);
// [ 1, 5, 6, 7, 8, 9 ]

總結

在本文中,我們討論了數(shù)組 reduce() 方法。首先介紹 reduce() 方法,然后,使用一個簡單的示例討論其行為。最后,通過示例討論了 reduce() 方法最常見的五個用例。如果你是JavaScript的初學者,那么本文將對你有所幫助。

到此這篇關于JavaScript中reduce()的5個基本用法示例的文章就介紹到這了,更多相關JavaScript reduce()用例內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 幾行js代碼實現(xiàn)自適應

    幾行js代碼實現(xiàn)自適應

    本文主要介紹了使用js獲取隱藏元素寬高的解決方案以及代碼思路,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 很多人都是用下面的js刷新站IP和PV

    很多人都是用下面的js刷新站IP和PV

    有人用JS做網(wǎng)站跳轉,也有人用很多其他作弊的方法,今天又發(fā)現(xiàn)有太多的人用這樣的方法實現(xiàn)兩個站的IP共享,把http://www.dbjr.com.cn替換成自己的站
    2008-09-09
  • JavaScript實現(xiàn)分頁效果

    JavaScript實現(xiàn)分頁效果

    本文主要介紹了JavaScript實現(xiàn)分頁效果的示例代碼。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • js判斷瀏覽器版本以及瀏覽器內核的方法

    js判斷瀏覽器版本以及瀏覽器內核的方法

    這篇文章主要介紹了js判斷瀏覽器版本以及瀏覽器內核的方法,可實現(xiàn)針對各個瀏覽器的判斷,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-01-01
  • JSX在render函數(shù)中的應用詳解

    JSX在render函數(shù)中的應用詳解

    這篇文章主要介紹了JSX在render函數(shù)中的應用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • javascript實現(xiàn)分欄顯示小技巧附圖

    javascript實現(xiàn)分欄顯示小技巧附圖

    考試頁面可以實現(xiàn)隱藏左邊的考生信息部分,學了javascript后也能實現(xiàn)這個功能了,下面是實現(xiàn)思路、代碼及解效果截圖,喜歡的朋友們可以看看
    2014-10-10
  • js對象轉json數(shù)組的簡單實現(xiàn)案例

    js對象轉json數(shù)組的簡單實現(xiàn)案例

    本篇文章主要是對js對象轉json數(shù)組的簡單實現(xiàn)案例進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-02-02
  • JS二維數(shù)組的定義說明

    JS二維數(shù)組的定義說明

    本篇文章主要是對JS二維數(shù)組的定義進行了說明介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-03-03
  • js核心基礎之構造函數(shù)constructor用法實例分析

    js核心基礎之構造函數(shù)constructor用法實例分析

    這篇文章主要介紹了js核心基礎之構造函數(shù)constructor用法,結合具體實例形式分析了javascript構造函數(shù)constructor概念、原理、使用方法及相關操作注意事項,需要的朋友可以參考下
    2019-05-05
  • js獲取對象,數(shù)組所有屬性鍵值(key)和對應值(value)的方法示例

    js獲取對象,數(shù)組所有屬性鍵值(key)和對應值(value)的方法示例

    這篇文章主要介紹了js獲取對象,數(shù)組所有屬性鍵值(key)和對應值(value)的方法,涉及javascript對于對象、數(shù)組鍵名與鍵值遍歷相關操作技巧,需要的朋友可以參考下
    2019-06-06

最新評論