reduce,自帶遍歷的超實用方法

2022-02-15 07:54:01 字數 1352 閱讀 5088

arr.reduce(function(prev,cur,index,arr), init);

其中,arr表示原陣列;

prev表示上一次呼叫**時的返回值,或者初始值 init;

cur表示當前正在處理的陣列元素;

index表示當前正在處理的陣列元素的索引,若提供 init 值,則索引為0,否則索引為1;

init表示初始值。

看上去是不是感覺很複雜?沒關係,只是看起來而已,其實常用的引數只有兩個:prevcur。接下來我們跟著例項來看看具體用法吧~

先提供乙個原始陣列:

var arr = [3,9,4,3,6,0,9];

實現以下需求的方式有很多,其中就包含使用reduce()的求解方式,也算是實現起來比較簡潔的一種吧。

var sum = arr.reduce(function (prev, cur) ,0);

由於傳入了初始值0,所以開始時prev的值為0,cur的值為陣列第一項3,相加之後返回值為3作為下一輪**的prev值,然後再繼續與下乙個陣列項相加,以此類推,直至完成所有陣列項的和並返回。

由於未傳入初始值,所以開始時prev的值為陣列第一項3,cur的值為陣列第二項9,取兩值最大值後繼續進入下一輪**。

var newarr = arr.reduce(function (prev, cur) ,);

實現的基本原理如下:

初始化乙個空陣列

② 將需要去重處理的陣列中的第1項在初始化陣列中查詢,如果找不到(空陣列中肯定找不到),就將該項新增到初始化陣列

③ 將需要去重處理的陣列中的第2項在初始化陣列中查詢,如果找不到,就將該項繼續新增到初始化陣列

④ ……

⑤ 將需要去重處理的陣列中的第n項在初始化陣列中查詢,如果找不到,就將該項繼續新增到初始化陣列

⑥ 將這個初始化陣列返回

reduce() 是陣列的歸併方法,與foreach()、map()、filter()等迭代方法一樣都會對陣列每一項進行遍歷,但是reduce() 可同時將前面陣列項遍歷產生的結果與當前遍歷項進行運算,這一點是其他迭代方法無法企及的

超實用的jQuery分頁外掛程式

呼叫方法 tcdpagecode createpage pagecount 總頁數 current 當前頁 jquery.pager.js 應用案例 共條記錄,當前顯示第1頁 fxgoods.js middlediv height window.innerheight search height t...

Xcode自帶的超好用的診斷工具

知識小集 github xcode已經為我們準備了十分豐富的編譯警告,儘管這些警告不會導致編譯不過,但是背後一定沒有無緣無故的恨。請正確對待所有警告,避免在執行時產生一些讓你感到難以捉摸的現象,treat warnings as errors也不失為乙個不錯的選擇。如果你對某些警告有絕對的自信,可以...

超實用的idea 快捷鍵

超實用的idea 快捷鍵。command option 等於 command e command option control enter alt insert command 或 可以跳到大括號的開頭結尾 command f12可以顯示當前檔案的結構 command option n.建立類 co...