Lodash原始碼精讀 chunk slice

2021-10-21 17:32:24 字數 1635 閱讀 1192

today 2021.3.12

lodash 原始碼

將陣列(array)拆分成多個 size 長度的區塊,並將這些區塊組成乙個新陣列。 如果array 無法被分割成全部等長的區塊,那麼最後剩餘的元素將組成乙個區塊。

function

chunk

(array, size =1)

let index =

0let resindex =

0const result =

newarray

(math.

ceil

(length / size)

)//ceil函式返回大於或等於乙個給定數字的最小整數

while

(index < length)

return result

}

輸入輸出例子:

_.

chunk([

'a',

'b',

'c',

'd'],2

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

chunk([

'a',

'b',

'c',

'd'],3

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

以上雖然是

裁剪陣列array,從 start 位置開始到end結束,但不包括 end 本身的位置。

function

slice

(array, start, end

) start = start ==

null?0

: start

end = end ===

undefined

? length : end

//判斷start<0 假設為-4 傳入[1,2,3]

//4>length 則start 取0 假設傳入值為-3 則取3+(-3)=0 假設傳入值為-2 則取3+(-2)=1

if(start <0)

//結束標識大於length取length 小於length 取當前值

end = end > length ? length : end

if(end <0)

//0填充右位移操作 >>>

//01010>>>1 00101

length = start > end ?0:

((end - start)

>>>0)

start >>>=

0let index =-1

const result =

newarray

(length)

while

(++index < length)

return result

}

輸入輸出例子:

*

var array =[1

,2,3

,4]*

* _.

slice

(array,2)

*// => [3, 4]

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 ...

lodash原始碼分析之isArguments

有人命中註定要過平庸的生活,默默無聞,因為他們經歷了痛苦或不幸 有人卻故意這樣做,那是因為他們得到的幸福超過了他們的承受能力。卡爾維諾 煙雲 本文為讀 lodash 原始碼的第二十一篇,後續文章會更新到這個倉庫中,歡迎 star pocket lodash import gettag from in...

Lodash原始碼講解 slice函式

我們首先來看一下這個函式的原始碼,原始碼如下所示 creates a slice of array from start up to,but not including,end note this method is used instead of array slice to ensure den...