精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

四個JavaScript 中 array.reduce() 數組方法的使用實例

開發 前端
Array.prototype.reduce() 是數組中最強大的方法之一,也是 JavaScript 函數式編程中一個吸引人的特性。但不幸的是,我發現很多朋友不習慣使用它

今天請讓我詳細介紹一下這個方法,希望對你有幫助。

這是 reduce 的基本用法:

var arr = [1, 2, 3];
function reducer(parmar1, parmar2){
}
arr.reduce(reducer)

reduce是數組原型對象上的一個方法,可以幫助我們操作數組。它將另一個函數作為其參數,可以稱為reducer。

reducer 有兩個參數。第一個參數 param1 是最后一次 reducer 運行的結果。如果這是第一次運行 reducer,則 param1 的默認值是數組第一個元素的值。

reduce 方法循環遍歷數組中的每個元素,就像在 for 循環中一樣。并將循環中的當前值作為參數2。

遍歷完數組,reduce會返回最后一個reducer計算的結果。

我們來看一個詳細的例子。

var arr = ['a', 'b', 'c', 'd', 'e'];
function add(x, y) {
return x + y;
}
arr.reduce(add)

接下來,我們來探索一下上面的代碼是如何執行的。

在這段代碼中,reducer 是 add 。

首先,因為我們是第一次執行add,所以數組中的第一個元素'a'會被當作add的第一個參數,然后循環會從數組的第二個元素'b'開始。這一次,'b' 是 add 的第二個參數。

第一次計算后,我們得到結果'ab'。此結果將被緩存并在下一次添加計算中用作 param1。同時,數組中的第三個參數'c'將用作add的param2。

同樣,reduce 會繼續遍歷數組中的元素,運行 'abc' 和 'd' 作為 add 的參數。

最后,遍歷數組中最后一個元素后,返回計算結果。

現在我們有了結果:'abcde'。

所以,我們可以看到reduce也是一種遍歷數組的方式!它依次取數組中每個元素的值并執行reducer函數。

但我們可以看到,上面的循環并沒有那種和諧的美感。因為我們把數組的第一個元素,也就是'a'作為初始的param1,然后從數組的第二個元素循環得到param2。

實際上,我們可以將reduce中的第二個參數指定為reducer函數的param1的初始值,這樣param2就會從數組的第一個元素開始循環獲取。

代碼如下:

var arr = ['a', 'b', 'c', 'd', 'e'];
function add(x, y) {
return x + y;
}
arr.reduce(add, 's')

這一次,我們第一次調用reducer時將's'作為param1,然后從第一個元素開始依次遍歷數組。

所以我們可以使用這個語法來重寫我們的第一個代碼片段。

var arr = ['a', 'b', 'c', 'd', 'e'];
function add(x, y) {
return x + y;
}
arr.reduce(add, '')

接下來,我們將進入實際編程章節,體驗reduce的強大威力。

1、累加和累積乘法

如果我們想得到數組中所有元素的總和,你會怎么做?

一般來說,你可能會這樣寫:

function accumulation(arr) {
let sum = 0;
for (let i = 0; i < arr.length; i++) {
sum = sum + arr[i];
}
return sum;
}

當然,你可能還有其他的寫法,但是只要使用for循環,代碼就會顯得多余。

那我們看看上面的累加函數是做什么的:

  • 將初始總和設置為零
  • 取出數組中的第一個元素并求和
  • 在 sum 中緩存上一步的結果
  • 依次取出數組中的其他元素,進行上述操作
  • 返回最終結果

我們可以看到,當我們用文字描述上述步驟時,很明顯它符合reduce的使用。所以我們可以使用reduce來重寫上面的代碼:

function accumulation(arr) {
function reducer(x, y) {
return x + y
}
return arr.reduce(reducer, 0);
}

如果你習慣使用箭頭函數,上面的代碼看起來會更簡潔:

function accumulation(arr) {
return arr.reduce((x, y) => x + y, 0);
}

一行代碼搞定!

當然,累積乘法和累加是完全一樣的:

function multiplication(arr) {
return arr.reduce((x, y) => x * y, 1);
}

很多時候,我們在求和的時候需要加上一個權重,這樣更能體現reduce的優雅。

const scores = [
{ score: 90, subject: "HTML", weight: 0.2 },
{ score: 95, subject: "CSS", weight: 0.3 },
{ score: 85, subject: "JavaScript", weight: 0.5 }
];
const result = scores.reduce((x, y) => x + y.score * y.weight, 0); // 89

2、獲取一個數組的最大值和最小值

如果要獲取數組的最大值和最小值,可以這樣寫:

function max(arr){
let max = arr[0];
for (let ele of arr) {
if(ele > max) {
max = ele;
}
}
return max;
}

這和以前一樣,如果我們使用reduce,我們可以在一行代碼中完成。

let arr = [3.24, 2.78, 999];
arr.reduce((x, y) => Math.max(x, y));
arr.reduce((x, y) => Math.min(x, y));

3、計算數組中元素出現的頻率

我們經常需要統計數組中每個元素出現的次數。reduce 方法可以幫助我們實現這一點。

function countFrequency(arr) {
return arr.reduce(function(result, ele){
// Judge whether this element has been counted before
if (result.get(ele) != undefined) {
/**
* If this element has been counted before,
* increase the frequency of its occurrence by 1
*/
result.set(ele, result.get(ele) + 1)
} else {
/**
* If this element has not been counted before,
* set the frequency of its occurrence to 1
*/
result.set(ele, 1);
}
return result;
}, new Map());
}

注意,我們使用map對象而不是對象來存儲統計后的頻率,因為數組中的元素可能是對象類型,而對象的key只能是字符串或符號類型。

這里有兩個例子:

同樣,如果要統計字符串中每個字符出現的頻率,可以先將字符串轉換為字符數組,然后按照上面的方法。

let str = 'helloworld';
str.split('').reduce((result, currentChar) => {
result[currentChar] ? result[currentChar] ++ : result[currentChar] = 1;
return result;
}, {})

因為字符類型可以用作對象的鍵,所以我們這里不使用 Map。

4、多個數組的展平

function Flat(arr = []) {
return arr.reduce((t, v) => t.concat(Array.isArray(v) ? Flat(v) : v), [])
}

通過reduce依次訪問數組中的每個元素。如果我們發現元素還是一個數組,就遞歸調用 flat 方法。

總結

以上就是我今天跟你分享的4個關于數組reduce的用法,希望對你有所幫助。

責任編輯:龐桂玉 來源: web前端開發
相關推薦

2023-02-01 08:31:48

2022-11-13 15:33:30

JavaScript數組開發

2023-07-04 15:52:49

JavaScript數組

2022-01-12 15:50:24

JavaScript開發循環

2024-03-21 14:27:13

JavaScript數組

2022-04-18 09:37:02

JavaScript數組開發

2020-03-19 15:30:08

JavaScript數組字符串

2021-09-29 06:03:37

JavaScriptreduce() 前端

2022-11-23 16:12:57

JavaScript數據類型數組

2024-08-23 15:34:23

JavaScrip數組

2022-05-06 12:03:16

數組Javascript

2023-11-14 16:57:10

2019-07-25 10:08:05

JavaScript數組轉換

2022-04-28 08:41:53

JavaScript數組

2022-06-27 23:31:01

JavaScript框架開發

2021-02-07 07:52:07

數組 JavaScript結構

2023-10-26 07:47:35

JavaScript代碼變量

2009-03-13 09:39:34

JavaScript函數調用規則

2021-08-23 10:37:14

Javascript 機器學習阿里云

2023-09-06 16:55:33

JavaScript閉包
點贊
收藏

51CTO技術棧公眾號

五月天婷婷综合| 午夜亚洲视频| 欧美一区二区三区啪啪| 欧美区高清在线| 91午夜精品亚洲一区二区三区| 精品亚洲精品| 91久久精品一区二区二区| 另类欧美小说| 真实新婚偷拍xxxxx| 欧美激情理论| 精品国产百合女同互慰| 国产 福利 在线| 69xxxx欧美| 国产一区二区影院| 久久久亚洲精选| 熟女俱乐部一区二区| 欧美片第一页| 综合色中文字幕| 不卡一区二区三区视频| 日韩污视频在线观看| 亚洲黄色录像| 欧美色综合网站| 三上悠亚免费在线观看| 亚洲h视频在线观看| 99视频在线精品国自产拍免费观看| 亚洲免费中文字幕| 自慰无码一区二区三区| 国产一级片在线| 久久99精品久久久| 久久99视频免费| 荫蒂被男人添免费视频| 色呦呦在线免费观看| www.欧美日韩| 国产区亚洲区欧美区| 日韩精品一区三区| 色小子综合网| 亚洲精品网站在线播放gif| 熟女少妇精品一区二区| 免费在线观看的电影网站| 国产农村妇女毛片精品久久麻豆| 国产精品一区免费观看| 在线免费观看av片| 欧美婷婷在线| 在线成人激情视频| 第四色在线视频| 中文字幕日本一区| 色猫猫国产区一区二在线视频| a级片一区二区| 电影在线高清| www成人在线观看| 99久久99久久精品国产片| 精人妻无码一区二区三区| 在线播放亚洲| 精品中文字幕在线| 肉色超薄丝袜脚交69xx图片 | 欧美激情视频给我| av电影网站在线观看| 韩国女主播一区二区三区| 777奇米四色成人影色区| 亚洲熟妇av一区二区三区| 成全电影大全在线观看| 亚洲国产综合91精品麻豆| 国产在线拍揄自揄拍无码| 色综合久久影院| 中文欧美字幕免费| 天堂资源在线亚洲资源| 美女毛片在线看| 91免费版在线看| 精品久久久久久一区| 国产免费av观看| 日韩激情av在线| 日韩av片永久免费网站| 麻豆成人免费视频| 麻豆精品91| 日韩美女在线观看一区| 丁香社区五月天| 午夜亚洲伦理| 国产成人午夜视频网址| 久久久久久久黄色片| 日韩视频一区| 欧美乱妇40p| 久久午夜鲁丝片午夜精品| 激情文学一区| 538国产精品视频一区二区| 国产精品6666| 久久免费黄色| 国产精品入口免费视| 中文字幕在线2019| 精品综合免费视频观看| 国产精品电影久久久久电影网| 黄色在线视频网址| 秋霞午夜鲁丝一区二区老狼| 国产精品自产拍在线观| 国产口爆吞精一区二区| 国产成人午夜视频| 国产综合动作在线观看| 久草在现在线| 亚洲欧洲av一区二区三区久久| 日本黄网站色大片免费观看| 国产在线高潮| 成人免费在线播放视频| 日本福利视频网站| 粉嫩一区二区| 欧美巨大另类极品videosbest| 黄色片免费网址| 国内视频在线精品| 夜夜嗨av色一区二区不卡| 国产精品国产精品88| 一区二区中文字| 亚州av一区二区| 九九热最新视频| 国产乱码精品一品二品| 精品综合久久久| 天堂地址在线www| 亚洲制服丝袜av| 国产一级片黄色| 欧美h版在线观看| 日韩精品欧美国产精品忘忧草| 中字幕一区二区三区乱码| 婷婷综合激情| 18性欧美xxxⅹ性满足| 中文字幕欧美人妻精品| 国产99久久久国产精品潘金| 欧美日韩最好看的视频| 丝袜美女在线观看| 欧美性做爰猛烈叫床潮| 一二三区视频在线观看| 国际精品欧美精品| 欧美久久久精品| 最新在线中文字幕| bt7086福利一区国产| 亚洲一区美女| 亚洲风情在线资源| 欧美成人欧美edvon| 亚洲精品午夜视频| 亚洲精品免费观看| 91免费版网站入口| 成av人电影在线观看| 亚洲成在人线免费| 超碰中文字幕在线观看| 红桃成人av在线播放| 97国产精品免费视频| 中国女人真人一级毛片| 成人免费观看视频| 国产av不卡一区二区| 欧美韩国亚洲| 亚洲国模精品一区| 久久久美女视频| 欧美bbbbb| 久久亚洲国产精品日日av夜夜| 国产中文在线| 亚洲电影在线免费观看| 九九九久久久久久久| 色狮一区二区三区四区视频| 国产不卡av在线免费观看| 日本黄色免费视频| 亚洲aaa精品| 日本精品一区在线| 亚洲+小说+欧美+激情+另类| 欧美极品少妇xxxxⅹ免费视频 | 日韩视频在线观看| 日本午夜人人精品| 女人天堂在线| 欧美性xxxxx极品| 青青草视频播放| 国产精品v日韩精品v欧美精品网站| 国产精品视频久| 大片免费播放在线视频| 色视频成人在线观看免| 中文字幕丰满乱子伦无码专区| 99riav1国产精品视频| 97超级碰碰| 高h视频在线观看| 欧美一区二区三级| 麻豆成人在线视频| 成人在线综合网| 黄色一级在线视频| 欧美尿孔扩张虐视频| 午夜精品一区二区三区在线播放| 日韩一级中文字幕| 亚洲午夜激情av| 麻豆tv在线观看| 99精品免费视频| 欧美凹凸一区二区三区视频| 日韩性xxx| 色系列之999| 国产婷婷在线视频| 午夜视频在线观看一区| 国精产品一区一区三区免费视频| 天堂av在线一区| 亚洲福利av在线| 激情不卡一区二区三区视频在线 | 亚洲综合网在线观看| 久久国产精品久久w女人spa| 日本精品一区二区三区不卡无字幕| 成人国产综合| 欧美精品激情视频| 色wwwwww| 欧美自拍偷拍一区| 国产盗摄x88av| 2024国产精品| 一级做a免费视频| 禁久久精品乱码| 色播亚洲婷婷| 亚洲精品v亚洲精品v日韩精品| 国模精品一区二区三区色天香| 亚洲欧美强伦一区二区| 色呦呦一区二区三区| 国产97免费视频| 26uuu国产一区二区三区| 国产精品69页| 天天影视综合| 国产91社区| 91精品韩国| 久久久免费精品| 国产小视频在线| 日韩欧美国产一二三区| 国产精品99精品无码视| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲高清视频免费| 性欧美暴力猛交另类hd| 9l视频自拍9l视频自拍| 日韩a级大片| 91色视频在线导航| 久久久男人天堂| 欧美成人精品h版在线观看| 精品福利视频导航大全| 日韩一级免费观看| 一区二区视频播放| 欧美日韩另类视频| 九九精品在线观看视频| 久久久久成人黄色影片| 麻豆短视频在线观看| 久久国产精品72免费观看| 日本不卡在线观看视频| 国产精品chinese| 亚洲国产一区二区三区在线| 欧美日韩直播| 999国内精品视频在线| 粉嫩91精品久久久久久久99蜜桃| 7m第一福利500精品视频| 午夜在线激情影院| 久久视频免费在线播放| 亚洲av少妇一区二区在线观看| 色综合色狠狠综合色| 国产成人免费在线观看视频| 91在线精品一区二区| 黄色三级视频在线播放| 天堂久久久久va久久久久| 无码人妻精品一区二区蜜桃百度| 国产精品手机在线播放| 亚洲一区二区中文| 电影久久久久久| 97精品免费视频| 伊人在我在线看导航| 一区二区三区在线播放欧美| 日本人妻丰满熟妇久久久久久| 欧美日韩免费网站| 国产一级特黄a高潮片| 亚洲精品国产第一综合99久久| www亚洲色图| 久久综合九色欧美综合狠狠| 久久久国产精品无码| 蜜臀久久久99精品久久久久久| 国产69精品久久久久久久| 好看的日韩av电影| 人妻互换免费中文字幕| 香蕉精品视频在线观看| 在线精品日韩| 亚州av一区| 免费精品视频一区二区三区| av成人综合| 成人网在线免费看| 精品国产第一国产综合精品| 亚洲aⅴ男人的天堂在线观看| 久久久久伊人| 成人在线国产精品| 日本一区二区三区播放| 99视频在线播放| 久久超级碰碰| 日本一区二区不卡高清更新| 色一区二区三区四区| 亚洲自拍的二区三区| 一个色综合网| 日韩人妻无码精品久久久不卡| 一本色道久久综合亚洲精品高清| 91网站在线观看免费| 中文字幕人成人乱码| 国产乱子伦精品无码专区| 亚洲深夜影院| 久久撸在线视频| 国产成人精品三级| 国产人妻人伦精品1国产丝袜| 国产人成一区二区三区影院| 少妇太紧太爽又黄又硬又爽小说| 亚洲人xxxx| 一级片中文字幕| 欧美男男青年gay1069videost | 青娱乐国产精品视频| 国产乱码精品一区二区三区av| 欧美一级片黄色| 久久综合久久鬼色| 国产3级在线观看| 亚洲国产一区二区三区青草影视| 日本视频免费观看| 欧美乱妇23p| 天天操天天干天天舔| 亚洲欧美日韩国产中文| 久热国产在线| 欧美在线激情视频| 懂色av色香蕉一区二区蜜桃| 久久精品人成| 亚洲国产不卡| 亚洲精品无码国产| 老色鬼精品视频在线观看播放| 岛国精品一区二区三区| 国产女同性恋一区二区| 国产一二三四在线| 日韩欧美黄色动漫| 国产亲伦免费视频播放| 亚洲网址你懂得| 久久不射影院| 成人网中文字幕| 精品国产精品久久一区免费式| 欧美视频在线第一页| 奇米影视在线99精品| 人妻丰满熟妇av无码久久洗澡 | 麻豆av免费在线观看| 久久久综合av| 高清一区二区| 日韩精品一区二区三区外面 | 欧美激情一区二区三区在线视频观看| 日韩一区二区三区免费视频| 国产欧美一区二区视频| 一区二区在线| 国产aⅴ爽av久久久久| 国产色91在线| 成人精品免费在线观看| 精品久久久久久久久久久久久久久| 黄网站在线播放| 国产精品一区二区女厕厕| 九九亚洲精品| av免费中文字幕| 99久久99久久久精品齐齐| 久久免费看少妇高潮v片特黄| 欧美日韩综合不卡| 狠狠狠综合7777久夜色撩人| 91成人在线视频| 噜噜噜天天躁狠狠躁夜夜精品 | 国产精品白丝一区二区三区| 大片在线观看网站免费收看| 国产自产高清不卡| 久久一级免费视频| 欧美午夜精品一区二区三区| 欧美日韩伦理片| 秋霞午夜一区二区| 欧美美女在线| 日韩精品一区二区三区不卡| 2021国产精品久久精品| 免费av网站在线| 亚洲另类激情图| 最新欧美电影| 亚洲日本一区二区三区在线不卡| 蜜臂av日日欢夜夜爽一区| 91视频免费在观看| 欧美日韩电影一区| 国产理论在线观看| 亚洲精品日韩av| 欧美日韩综合| 亚洲啪av永久无码精品放毛片| 亚洲成av人片一区二区三区| 五月激情婷婷网| 欧美孕妇孕交黑巨大网站| 成人精品天堂一区二区三区| 污网站免费在线| 亚洲欧美韩国综合色| 成人乱码一区二区三区| 久久99亚洲精品| 粉嫩精品导航导航| 国产 国语对白 露脸| 国产精品资源站在线| 国产成人在线播放视频| 日韩国产一区三区| av亚洲一区| 2021国产视频| av成人老司机| 一区二区乱子伦在线播放| 在线观看日韩专区| 日日夜夜亚洲精品| 99re6这里有精品热视频| 粉嫩av一区二区三区| 欧美另类一区二区| 国产亚洲精品美女久久久| 国产精品无码久久久久| 在线观看精品视频| 国产不卡免费视频| 日韩欧美一区二区一幕| 亚洲欧美一区二区三区在线| 国产精品久久久久77777丨| 手机看片日韩国产|