每天一道js方法--lodash源碼解讀(一)

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

  • array(Array):需要被處理的數(shù)組。
  • [size=1](number): 每個塊的長度颊亮。

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

function chunk(array, size) {
  /*
   * max() 方法可返回兩個指定的數(shù)中帶有較大的值的那個數(shù)决乎。
   * 所以這里用Math.max方法是用來判斷size是否大于0队询,大于0則size = size 否則為0
   * 問:為什么不用三元運算符運算方程
   */
  size = Math.max(size, 0)
  /*
   *  三元計算 -- 如果array不存在則長度為0,否則為array的長度
   */ 
  const length = array == null ? 0 : array.length
  if (!length || size < 1) {
    return []
  }
  let index = 0
  let resIndex = 0
  /*
   *  Math.ceil() === 向上取整
   */ 
  const result = new Array(Math.ceil(length / size))

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

function baseSlice(array, start, end) {
  let index = -1
  let { length } = array

  if (start < 0) {
    start = -start > length ? 0 : (length + start)
  }
  end = end > length ? length : end
  if (end < 0) {
    end += length
  }
  // >>>的意思是二進(jìn)制右移一位 比如 2 >>> 1 === 1
  // 2 的二進(jìn)制為 0010 右移一位等于 0001 
  // >>>= 的意思是右移并賦值
  length = start > end ? 0 : ((end - start) >>> 0)
  start >>>= 0

  const result = new Array(length)
  while (++index < length) {
    result[index] = array[index + start]
  }
  return result
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末构诚,一起剝皮案震驚了整個濱河市蚌斩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌范嘱,老刑警劉巖送膳,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異丑蛤,居然都是意外死亡叠聋,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門盏阶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晒奕,“玉大人,你說我怎么就攤上這事名斟∧曰郏” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵砰盐,是天一觀的道長闷袒。 經(jīng)常有香客問我,道長岩梳,這世上最難降的妖魔是什么囊骤? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮冀值,結(jié)果婚禮上也物,老公的妹妹穿的比我還像新娘。我一直安慰自己列疗,他們只是感情好滑蚯,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般告材。 火紅的嫁衣襯著肌膚如雪坤次。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天斥赋,我揣著相機(jī)與錄音缰猴,去河邊找鬼。 笑死疤剑,一個胖子當(dāng)著我的面吹牛滑绒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播骚露,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼蹬挤,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了棘幸?” 一聲冷哼從身側(cè)響起焰扳,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎误续,沒想到半個月后吨悍,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡蹋嵌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年育瓜,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片栽烂。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡躏仇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出腺办,到底是詐尸還是另有隱情焰手,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布怀喉,位于F島的核電站书妻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏躬拢。R本人自食惡果不足惜躲履,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望聊闯。 院中可真熱鬧工猜,春花似錦、人聲如沸菱蔬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至犹褒,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間弛针,已是汗流浹背叠骑。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留削茁,地道東北人宙枷。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像茧跋,于是被迫代替她去往敵國和親慰丛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問題, 分享了一些自己做題目的經(jīng)驗瘾杭。 張土汪:刷leetcod...
    土汪閱讀 12,724評論 0 33
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,869評論 6 13
  • _.chunk(array, [size=1]) 將array拆分成多個size長度的塊诅病,把這些塊組成一個新數(shù)組。...
    windole閱讀 701評論 0 0
  • php usleep() 函數(shù)延遲代碼執(zhí)行若干微秒粥烁。 unpack() 函數(shù)從二進(jìn)制字符串對數(shù)據(jù)進(jìn)行解包贤笆。 uni...
    思夢PHP閱讀 1,981評論 1 24
  • 閑來聽瀑,對水長嘆讨阻,恨別初驚芥永。依稀夢中遙望,曾撫舊殤钝吮,早生華發(fā)埋涧。 牽魂天邊媚眼,嘆離愁惟煎奇瘦。望斷斷棘催、千里姻緣,夢聞...
    007008閱讀 334評論 8 8