Lodash原始碼解析 chunk函式

2021-10-23 05:26:53 字數 1217 閱讀 3932

沒有看過chunk函式的內部實現,根據官方文件給出的功能自己編寫實現。

chunk函式接受兩個引數,第一引數為array型別,第二個引數為number型別,其作用的是:將陣列(array)拆分成多個 size 長度的區塊,並將這些區塊組成乙個新陣列。 如果array 無法被分割成全部等長的區塊,那麼最後剩餘的元素將組成乙個區塊。例子如下:

_.

chunk([

'a',

'b',

'c',

'd'],2

);// => [['a', 'b'], ['c', 'd']] _.

chunk([

'a',

'b',

'c',

'd'],3

);// => [['a', 'b', 'c'], ['d']]

這裡我沒有遍歷整個陣列,這樣是沒有必要的,利用aarry型別的slice函式進行優化:

首先要判斷傳入函式的引數型別,如果不是array或者第二引數不是number要丟擲異常

記錄每個分割的臨時陣列的長度,用陣列的整個長度餘上要分割的數量

看這個餘數是否為0,如果不為0,做除法後要加1,這是因為我們前面要盡可能新增多的元素

這裡有個坑的點,我們最後part的值要娶乙個整數,然後除法運算子預設返回ieee754浮點數,例如:5/3返回的是1.666666667這種,要用parseint轉換為int

這樣之後,我們只要每次擷取part個值即可,只需迴圈size次就可以得到答案

(

function

(window)

let rest = arr.length % splitnum;

let newarr =

, part =

(rest ==0?

parseint

(arr.length / splitnum)

:parseint

(arr.length / splitnum +1)

);for(

let index =

0; index < splitnum; index ++

)return newarr;

} window.chunk = chunk;})

(window)

;

lodash 常用方法原始碼解析

將陣列 array 拆分成多個 size 長度的區塊,並將這些區塊組成乙個新陣列。如果array 無法被分割成全部等長的區塊,那麼最後剩餘的元素將組成乙個區塊。let newarray chunk array,2 將 array 分成兩組原理 var index 0,resindex 0,resul...

Lodash原始碼精讀 chunk slice

today 2021.3.12 lodash 原始碼 將陣列 array 拆分成多個 size 長度的區塊,並將這些區塊組成乙個新陣列。如果array 無法被分割成全部等長的區塊,那麼最後剩餘的元素將組成乙個區塊。function chunk array,size 1 let index 0let ...

lodash原始碼分析之Number

一 lodash版本 4.17.5 二 函式 1 clamp 1 定義 clamp number,lower upper 2 作用 返回加緊的數字。3 例子。const require lodash console.log clamp 10,1,20 輸出 10 console.log clamp ...