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