成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

lodash數(shù)組篇之1 chunk()

cangck_X / 2887人閱讀

摘要:最近打算去研究下的源碼,準(zhǔn)備把大部分方法都實現(xiàn)一遍。先自己寫,然后在對照源碼。第一個是將數(shù)組拆分成多個長度的區(qū)塊,并將這些區(qū)塊組成一個新數(shù)組。

最近打算去研究下lodash的源碼,準(zhǔn)備把大部分方法都實現(xiàn)一遍。先自己寫,然后在對照源碼。
第一個是 chunk

將數(shù)組(array)拆分成多個 size 長度的區(qū)塊,并將這些區(qū)塊組成一個新數(shù)組。 如果array 無法被分割成全部等長的區(qū)塊,那么最后剩余的元素將組成一個區(qū)塊

下面是自己實現(xiàn)的方法

    chunk:(array,size) =>{
        size = parseInt(size)
        if(size <= 0) {
            return array
        }
        let newArray =[]
        //先算出有幾個子數(shù)組,然后再根據(jù)size值從array里面提取子數(shù)組
        let groupSize = Math.ceil(array.length/size)
        for(let i=0; i< groupSize;i++) {
            newArray.push(array.slice(i*size,(i+1)*size))
        }
        return newArray
    }    

然后是lodash實現(xiàn)的chunk函數(shù)

function chunk(array, size) {
  size = Math.max(size, 0)
  const length = array == null ? 0 : array.length
  if (!length || size < 1) {
    return []
  }
  let index = 0
  let resIndex = 0
  const result = new Array(Math.ceil(length / size))

  while (index < length) {
    result[resIndex++] = slice(array, index, (index += size))
  }
  return result
}

loadsh實現(xiàn)的chunk 更加嚴(yán)謹(jǐn)一些,對array和size做了判斷 如果數(shù)組為空或者size < 1 就 return 出一個空數(shù)組
然后是對Math.max()的使用,本來這個方法是返回列表中的最大值,把其中一個值固定為0,另外一個無論傳什么數(shù)字,這個方法返回的最小值都是0。
用Math.ceil(array.length/size)得到新數(shù)組的長度,這個想法是一樣的

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/105446.html

相關(guān)文章

  • lodash數(shù)組篇之2 compact()

    摘要:創(chuàng)建一個新數(shù)組,包含原數(shù)組中所有的非假值元素。例如和都是被認為是假值。 創(chuàng)建一個新數(shù)組,包含原數(shù)組中所有的非假值元素。例如false, null, 0, , undefined, 和 NaN 都是被認為是假值。 以下是自己實現(xiàn)的compact() compact:(array)=>{ let result = [] //判斷參數(shù)是否是數(shù)組 如果不是...

    robin 評論0 收藏0
  • lodash數(shù)組篇之3 concat( )

    摘要:是一個包含了所有參數(shù)的類數(shù)組對象,比如說第一個參數(shù)可以通過獲取??赡苁呛鸵粯拥脑颍捎诩^函數(shù)的原因,指向了父級作用域。參數(shù)搭配的變量是一個數(shù)組,該變量將多余的參數(shù)放入數(shù)組中。 創(chuàng)建一個新數(shù)組,將array與任何數(shù)組 或 值連接在一起 自行實現(xiàn) concat:function(){ let length = arguments.length let re...

    韓冰 評論0 收藏0
  • Lodash源碼講解-chunk函數(shù)

    摘要:原文首發(fā)于源碼講解這是我們閱讀源碼的第篇博客,在這篇文章里我們來學(xué)習(xí)一下的方法。好啦,關(guān)于函數(shù)暫時就先講到這里啦。與惡龍纏斗過久自身亦成為惡龍凝視深淵過久深淵將回以凝視。 原文首發(fā)于Lodash源碼講解 這是我們閱讀Lodash源碼的第2篇博客,在這篇文章里我們來學(xué)習(xí)一下Lodash的chunk方法。 chunk函數(shù)內(nèi)部依賴其他的函數(shù),依賴的函數(shù)如下所示; slice 按照慣例,我們先...

    ISherry 評論0 收藏0
  • lodash源碼分析之chunk的尺與刀

    摘要:萬條數(shù)據(jù)依賴讀源碼之從看稀疏數(shù)組與密集數(shù)組原理的原理歸結(jié)起來就是切割和放置。尺在切割之前,需要用尺確定切割的數(shù)量。容器的長度剛好與塊的數(shù)量一致。當(dāng)與塊的數(shù)量相等時,表示已經(jīng)切割完畢,停止切割,最后將結(jié)果返回。 以不正義開始的事情,必須用罪惡使它鞏固。——莎士比亞《麥克白》 最近很多事似乎印證了這句話,一句謊言最后要用一百句謊言來圓謊。 本文為讀 lodash 源碼的第二篇,后續(xù)文章會...

    ZweiZhao 評論0 收藏0
  • Lodash學(xué)習(xí)筆記 - chunk函數(shù)

    摘要:文檔地址中文文檔英文文檔源碼地址將數(shù)組拆分成多個長度的區(qū)塊,并將這些區(qū)塊組成一個新數(shù)組。如果無法被分割成全部等長的區(qū)塊,那么最后剩余的元素將組成一個區(qū)塊。 百忙之中(閑來無事)想抽點時間好好讀一下源碼,于是就選了Lodash來寫一個系列罷。讀源碼順序就按照loadsh文檔順序來。 文檔地址:中文文檔?? 英文文檔源碼地址:gayhub _.chunk(array, [size...

    DrizzleX 評論0 收藏0

發(fā)表評論

0條評論

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