最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

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

語(yǔ)法

arr.reduce(callback,[initialValue])

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

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

回調(diào)函數(shù)

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

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

Current Index 和 Source Array 是可選的。

初始值

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

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

在下面的代碼片段中,第一個(gè)累加器( accumulator )被分配了初始值0。 currentValue 是正在處理的 numbersArr 數(shù)組的元素。在這里, currentValue 被添加到累加器,在下次調(diào)用回調(diào)函數(shù)時(shí),會(huì)將返回值作為參數(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.對(duì)數(shù)組的所有值求和

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

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

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

console.log(total); // 354

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

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

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

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

console.log(total); // 251

3.展平數(shù)組

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

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.按屬性分組對(duì)象

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

const result = [
 {subject: '物理', marks: 41},
 {subject: '化學(xué)', marks: 59},
 {subject: '高等數(shù)學(xué)', marks: 36},
 {subject: '應(yīng)用數(shù)學(xué)', marks: 90},
 {subject: '英語(yǔ)', 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: ‘化學(xué)', marks: 59 },
  { subject: ‘應(yīng)用數(shù)學(xué)', marks: 90 },
  { subject: ‘英語(yǔ)', marks: 64 }
 ],
 fail: [
  { subject: ‘物理', marks: 41 },
  { subject: ‘高等數(shù)學(xué)', marks: 36 }
 ]
}

5.刪除數(shù)組中的重復(fù)項(xiàng)

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

accumulator.includes() 檢查 duplicatedArr 數(shù)組的每個(gè)元素是否已經(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 ]

總結(jié)

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

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

相關(guān)文章

  • fetch 使用及如何接收J(rèn)S傳值

    fetch 使用及如何接收J(rèn)S傳值

    這篇文章主和要介紹了fetch 使用及如何接收J(rèn)S傳值,文中給大家提到了fetch基本使用方式和接收js傳值的使用方式,需要的朋友可以參考下
    2017-11-11
  • JavaScript實(shí)現(xiàn)簡(jiǎn)單計(jì)算器小功能

    JavaScript實(shí)現(xiàn)簡(jiǎn)單計(jì)算器小功能

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)簡(jiǎn)單計(jì)算器小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 解決canvas畫布使用fillRect()時(shí)高度出現(xiàn)雙倍效果的問(wèn)題

    解決canvas畫布使用fillRect()時(shí)高度出現(xiàn)雙倍效果的問(wèn)題

    下面小編就為大家?guī)?lái)一篇解決canvas畫布使用fillRect()時(shí)高度出現(xiàn)雙倍效果的問(wèn)題。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • js實(shí)現(xiàn)仿qq消息的彈出窗效果

    js實(shí)現(xiàn)仿qq消息的彈出窗效果

    這篇文章主要介紹了js實(shí)現(xiàn)仿qq消息的彈出窗效果,文章代碼實(shí)現(xiàn)模擬qq彈出框消息提醒,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JavaScript構(gòu)造函數(shù)舉例詳解

    JavaScript構(gòu)造函數(shù)舉例詳解

    Javascript構(gòu)造函數(shù)是非常強(qiáng)大的,它可能也是Javascript能被充分利用的特點(diǎn)之一,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),這篇文章主要給大家介紹了關(guān)于JavaScript構(gòu)造函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • webpack自動(dòng)刷新瀏覽器源碼解析

    webpack自動(dòng)刷新瀏覽器源碼解析

    Webpack自動(dòng)刷新瀏覽器是一項(xiàng)非常實(shí)用的功能,它可以讓開發(fā)者在編輯代碼時(shí),自動(dòng)更新瀏覽器,從而節(jié)省大量的時(shí)間。那么它是如何實(shí)現(xiàn)的呢?
    2023-02-02
  • js模擬百度模糊搜索的實(shí)例

    js模擬百度模糊搜索的實(shí)例

    下面小編就為大家?guī)?lái)一篇js模擬百度模糊搜索的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • Javascript前端優(yōu)化代碼

    Javascript前端優(yōu)化代碼

    這篇文章主要介紹了Javascript前端優(yōu)化代碼,對(duì)性能優(yōu)化感興趣的同學(xué),可以參考下
    2021-04-04
  • javascript之嵌套函數(shù)使用方法

    javascript之嵌套函數(shù)使用方法

    在javascript中允許使用嵌套函數(shù),下面是簡(jiǎn)單的例子。
    2010-03-03
  • js文本框輸入內(nèi)容智能提示效果

    js文本框輸入內(nèi)容智能提示效果

    這篇文章主要介紹了js文本框輸入內(nèi)容智能提示效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-12-12

最新評(píng)論

永胜县| 上犹县| 定襄县| 湖北省| 宜君县| 伊宁县| 麻江县| 钟山县| 西青区| 望谟县| 天镇县| 鄄城县| 宁海县| 商洛市| 桐梓县| 黔江区| 蛟河市| 文成县| 黄龙县| 灵山县| 湟中县| 琼中| 宁安市| 凌源市| 淅川县| 东兴市| 青海省| 安达市| 汝南县| 边坝县| 黄骅市| 丹江口市| 静安区| 桂林市| 湛江市| 巴楚县| 黄山市| 嘉鱼县| 津南区| 潢川县| 江川县|