摘要:第一天寫文章,心里難免有些小激動,希望能堅持下去,有輸出才有更好的輸入。用戶選擇完之后,我會得到一個時間戳的數組這里呢我們先需要看一下的語法。
第一天寫文章,心里難免有些小激動,希望能堅持下去,有輸出才有更好的輸入。
reduce這個方法最初我是在面試題里看見的
有一個長度為100的數組,請以優雅的方式求出該數組的前10個元素之和?
答案如下
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], sum = 0; sum = a.slice(0, 10).reduce(function(pre, current) { console.log(pre,current); return pre + current; }); console.log(sum); //55
`
基礎的用法
就如面試一樣,把一個函數作用在a數組上,這個函數必須接收兩個參數:
pre: 數組里的第一個值或者上一次疊加的結果值。
current:代表這當前參與運算的值
打印一下每一次pre,current可以看到,一共遍歷了9次,return 返回的是下一次遍歷的pre的值。
1 2 3 3 6 4 10 5 15 6 21 7 28 8 36 9 45 10
我在項目中的使用
在項目中有個這樣的頁面
用戶選擇所要預定的時間,當然可以隨便的選擇,比如說選擇了四個時間段
11:00~11:30,11:30~12:00,
12:00~12:30,18:00~18:30
我需要判斷一下如果選擇的時間段中有連續的時間,那么就要合并成一項,如上說的四個時間段,我需要合并成11:00~12:30,18:00~18:30,在把這個時間傳給后臺,生成兩個訂單。
用戶選擇完之后,我會得到一個時間戳的數組timeList,這里呢我們先需要看一下reduce的語法。
arr.reduce(callback,initialValue)
callback (執行數組中每個值的函數,包含四個參數,上面的面試題里已經看了兩個)
pre (上一次調用回調返回的值,或者是提供的初始值(initialValue)) current (數組中當前被處理的元素) index (當前元素在數組中的索引) array (調用 reduce 的數組)
initialValue (作為第一次調用 callback 的第一個參數,這里呢也可以理解為最終返回值是什么類型)
//選擇好的時間 let timeList=[ {startTime:1513393200000,endTime:1513395000000}, {startTime:1513395000000,endTime:1513396800000}, {startTime:1513396800000,endTime:1513398600000}, {startTime:1513418400000,endTime:1513420200000}, ] //基本邏輯呢就是如果某一項的endTime==另一項的startTime,那么我就需要將這兩項合并為一項,再與其他的作比較 //首先用戶呢不會按照一定的順序去選,人家怎么開心怎么來,所以呢最開始我需要按照startTime的大小進行排序 timeList.sort((val1,val2)=> val1.startTime-val2.startTime); //接下來就要用到reduce方法了,既然我想結果返回一個數組,那么initial這個參數,我也要放一個數組進去 具體方法如下 var a=timeList.reduce((prev,cur)=>{ if(prev.length!=0&&prev[prev.length-1].endTime==cur.startTime){ prev.splice(prev.length-1,1,{ "startTime": prev[prev.length-1].startTime, "endTime": cur.endTime }) } else{ prev.push(cur) } return prev },[]) console.log(a) //[{startTime:1513393200000,endTime:1513396800000},{startTime:1513418400000,endTime:1513420200000}] 合并完只有兩項
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/92182.html
摘要:最近經常在項目中經??吹絼e人用處理數據,很是牛掰,很夢幻,不如自己琢磨琢磨。初始值或者計算結束后的返回值。當前元素所屬的數組對象。傳遞給函數的初始值,相當于的初始值。 showImg(https://user-gold-cdn.xitu.io/2018/9/4/165a52f4bf93fbf4?w=6000&h=3000&f=jpeg&s=3043490); 最近經常在項目中經??吹絼e...
摘要:一語法其中,表示將要原數組表示上一次調用回調時的返回值,或者初始值表示當前正在處理的數組元素表示當前正在處理的數組元素的索引,若提供值,則索引為,否則索引為表示初始值。 一、語法 arr.reduce(function(prev,cur,index,arr){...}, init); 其中,arr 表示將要原數組;prev 表示上一次調用回調時的返回值,或者初始值 init;cur 表...
摘要:不會改變原數組,它返回過濾后的新數組。打印到控制臺成功的收集到里面錯誤的收集到里面。語法參數回調當前的當前的索引值這個數組對象回調的指向用法場景這個一般就用在,判斷數組的每個元素是否符合條件。 首先是函數概述:map():返回一個新的Array,每個元素為調用func的結果 filter():返回一個符合func條件的元素數組 some():返回一個boolean,判斷是否有元素是否符...
摘要:如果該函數的返回值大于,表示第一個成員排在第二個成員后面其他情況下,都是第一個元素排在第二個元素前面。第三次執行,為上一輪的返回值,為第四個成員。第四次執行,為上一輪返回值,為第五個成員。 JS中ArrayAPI學習筆記 記博客,時?;仡?尤其是面試之先回顧阮一峰標準庫Array對象 1 一些標準庫回顧 showImg(https://segmentfault.com/img/remo...
摘要:方法是方法的逆向操作,后者是將字符串分割成數組。不是所有的值都是偶數含有偶數和將數組元素進行組合,生成單個值數組求和數組求積求最大值函數需要兩個函數,第一個是執行簡化操作的函數,第二個是初始值。 數組的添加和刪除 push()方法在數組的尾部添加一個或者多個元素 a = []; a.push(zero) // a = [zero] a.push(on...
閱讀 4593·2021-09-10 11:22
閱讀 544·2019-08-30 11:17
閱讀 2577·2019-08-30 11:03
閱讀 440·2019-08-29 11:18
閱讀 3467·2019-08-28 17:59
閱讀 3227·2019-08-26 13:40
閱讀 3177·2019-08-26 10:29
閱讀 1147·2019-08-26 10:14