国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js中reduce的用法

i_garfileo / 2109人閱讀

摘要:第一天寫文章,心里難免有些小激動,希望能堅持下去,有輸出才有更好的輸入。用戶選擇完之后,我會得到一個時間戳的數(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

相關(guān)文章

  • jsreduce神奇用法

    摘要:最近經(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)常看到別...

    岳光 評論0 收藏0
  • 淺談JS reduce() 用法

    摘要:一語法其中,表示將要原數(shù)組表示上一次調(diào)用回調(diào)時的返回值,或者初始值表示當前正在處理的數(shù)組元素表示當前正在處理的數(shù)組元素的索引,若提供值,則索引為,否則索引為表示初始值。 一、語法 arr.reduce(function(prev,cur,index,arr){...}, init); 其中,arr 表示將要原數(shù)組;prev 表示上一次調(diào)用回調(diào)時的返回值,或者初始值 init;cur 表...

    gplane 評論0 收藏0
  • js數(shù)組方法forEach、map、filter、reduce、every、some總結(jié)

    摘要:不會改變原數(shù)組,它返回過濾后的新數(shù)組。打印到控制臺成功的收集到里面錯誤的收集到里面。語法參數(shù)回調(diào)當前的當前的索引值這個數(shù)組對象回調(diào)的指向用法場景這個一般就用在,判斷數(shù)組的每個元素是否符合條件。 首先是函數(shù)概述:map():返回一個新的Array,每個元素為調(diào)用func的結(jié)果 filter():返回一個符合func條件的元素數(shù)組 some():返回一個boolean,判斷是否有元素是否符...

    CocoaChina 評論0 收藏0
  • JSArrayAPI學(xué)習(xí)筆記

    摘要:如果該函數(shù)的返回值大于,表示第一個成員排在第二個成員后面其他情況下,都是第一個元素排在第二個元素前面。第三次執(zhí)行,為上一輪的返回值,為第四個成員。第四次執(zhí)行,為上一輪返回值,為第五個成員。 JS中ArrayAPI學(xué)習(xí)筆記 記博客,時常回顧.尤其是面試之先回顧阮一峰標準庫Array對象 1 一些標準庫回顧 showImg(https://segmentfault.com/img/remo...

    tolerious 評論0 收藏0
  • js數(shù)組用法

    摘要:方法是方法的逆向操作,后者是將字符串分割成數(shù)組。不是所有的值都是偶數(shù)含有偶數(shù)和將數(shù)組元素進行組合,生成單個值數(shù)組求和數(shù)組求積求最大值函數(shù)需要兩個函數(shù),第一個是執(zhí)行簡化操作的函數(shù),第二個是初始值。 數(shù)組的添加和刪除 push()方法在數(shù)組的尾部添加一個或者多個元素 a = []; a.push(zero) // a = [zero] a.push(on...

    Harriet666 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<