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

資訊專欄INFORMATION COLUMN

Lodash學(xué)習(xí)筆記 - chunk函數(shù)

DrizzleX / 3313人閱讀

摘要:文檔地址中文文檔英文文檔源碼地址將數(shù)組拆分成多個(gè)長度的區(qū)塊,并將這些區(qū)塊組成一個(gè)新數(shù)組。如果無法被分割成全部等長的區(qū)塊,那么最后剩余的元素將組成一個(gè)區(qū)塊。

百忙之中(閑來無事)想抽點(diǎn)時(shí)間好好讀一下源碼,于是就選了Lodash來寫一個(gè)系列罷。讀源碼順序就按照loadsh文檔順序來。

文檔地址:中文文檔?? 英文文檔
源碼地址:gayhub

    _.chunk(array, [size=1])

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

例:

    chunk(["a", "b", "c", "d"], 2)
    // => [["a", "b"], ["c", "d"]]
     
    chunk(["a", "b", "c", "d"], 3)
    // => [["a", "b", "c"], ["d"]]

很實(shí)用的一個(gè)函數(shù),下面來看下具體實(shí)現(xiàn):

可以看到,chunk依賴了slice.js,具體實(shí)現(xiàn)解析已經(jīng)講過了:傳送門

    import slice from "./slice.js"

首先是參數(shù)的驗(yàn)證

size = Math.max(size, 0)
const length = array == null ? 0 : array.length
if (!length || size < 1) {
    return []
}

根據(jù)length/size向上取整來確定新的數(shù)組長度,循環(huán)調(diào)用切片函數(shù)slice,最后返回結(jié)果

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

最后貼個(gè)源碼:

import slice from "./slice.js"

/**
 * Creates an array of elements split into groups the length of `size`.
 * If `array` can"t be split evenly, the final chunk will be the remaining
 * elements.
 *
 * @since 3.0.0
 * @category Array
 * @param {Array} array The array to process.
 * @param {number} [size=1] The length of each chunk
 * @returns {Array} Returns the new array of chunks.
 * @example
 *
 * chunk(["a", "b", "c", "d"], 2)
 * // => [["a", "b"], ["c", "d"]]
 *
 * chunk(["a", "b", "c", "d"], 3)
 * // => [["a", "b", "c"], ["d"]]
 */
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
}

export default chunk

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

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

相關(guān)文章

  • Lodash學(xué)習(xí)筆記 - slice函數(shù)

    摘要:文檔地址中文文檔英文文檔源碼地址第一個(gè)函數(shù)是,不過源碼中依賴了,所以第一篇文章就從開始。這個(gè)函數(shù)的作用就是裁剪數(shù)組,從下標(biāo)開始,到下標(biāo)結(jié)束,但是并不包含,并將結(jié)果作為一個(gè)數(shù)組返回。并且注明了這個(gè)方法用于代替來確保數(shù)組正確返回。 百忙之中(閑來無事)想抽點(diǎn)時(shí)間好好讀一下源碼,于是就選了Lodash來寫一個(gè)系列罷。讀源碼順序就按照loadsh文檔順序來。 文檔地址:中文文檔?? 英文文檔源...

    lei___ 評(píng)論0 收藏0
  • Lodash源碼講解-chunk函數(shù)

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

    ISherry 評(píng)論0 收藏0
  • JavaScript 數(shù)組分組的實(shí)現(xiàn)

    摘要:今天回答了的問題生產(chǎn)嵌套數(shù)組也就是對(duì)數(shù)組分組更好的寫法。實(shí)現(xiàn)像這種,目標(biāo)數(shù)組長度和原數(shù)組長度不一致的情況,函數(shù)式寫法很容易想到函數(shù)。小結(jié)數(shù)組分組是一個(gè)很簡單的問題,有很多種方法來處理。 今天回答了 @_bleach 的問題:JS生產(chǎn)嵌套數(shù)組(也就是對(duì)數(shù)組分組)更好的寫法?;卮鸬倪^程中對(duì) lodash _.chunk() 產(chǎn)生了好奇,所以分析了一下它的源碼,再加上我自己的解決方案,收集...

    Coly 評(píng)論0 收藏0
  • 關(guān)于API 選擇的一些思考.

    摘要:問題描述我經(jīng)常需要使用一些基礎(chǔ)性的功能性函數(shù)比如數(shù)據(jù)去重對(duì)象合并等通常情況下選擇方向大致有個(gè)自己實(shí)現(xiàn)使用原生的使用提供的首先放棄自己實(shí)現(xiàn)這樣的方式因?yàn)楣ぷ髁看蠹词箤?shí)現(xiàn)了沒有經(jīng)過測試不夠穩(wěn)定沒有意義因?yàn)橐呀?jīng)存在現(xiàn)成的別人實(shí)現(xiàn)的其次如果原生提供 問題描述:我經(jīng)常需要使用一些基礎(chǔ)性的, 功能性函數(shù), 比如數(shù)據(jù)去重, 對(duì)象合并等. 通常情況下,選擇方向大致有3個(gè): 自己實(shí)現(xiàn) API 使用原生...

    Tychio 評(píng)論0 收藏0
  • lodash源碼分析之chunk的尺與刀

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

    ZweiZhao 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<