摘要:最近打算去研究下的源碼,準備把大部分方法都實現一遍。先自己寫,然后在對照源碼。第一個是將數組拆分成多個長度的區塊,并將這些區塊組成一個新數組。
最近打算去研究下lodash的源碼,準備把大部分方法都實現一遍。先自己寫,然后在對照源碼。
第一個是 chunk
將數組(array)拆分成多個 size 長度的區塊,并將這些區塊組成一個新數組。 如果array 無法被分割成全部等長的區塊,那么最后剩余的元素將組成一個區塊
下面是自己實現的方法
chunk:(array,size) =>{ size = parseInt(size) if(size <= 0) { return array } let newArray =[] //先算出有幾個子數組,然后再根據size值從array里面提取子數組 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實現的chunk函數
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實現的chunk 更加嚴謹一些,對array和size做了判斷 如果數組為空或者size < 1 就 return 出一個空數組
然后是對Math.max()的使用,本來這個方法是返回列表中的最大值,把其中一個值固定為0,另外一個無論傳什么數字,這個方法返回的最小值都是0。
用Math.ceil(array.length/size)得到新數組的長度,這個想法是一樣的
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/105446.html
摘要:創建一個新數組,包含原數組中所有的非假值元素。例如和都是被認為是假值。 創建一個新數組,包含原數組中所有的非假值元素。例如false, null, 0, , undefined, 和 NaN 都是被認為是假值。 以下是自己實現的compact() compact:(array)=>{ let result = [] //判斷參數是否是數組 如果不是...
摘要:是一個包含了所有參數的類數組對象,比如說第一個參數可以通過獲取??赡苁呛鸵粯拥脑?,由于箭頭函數的原因,指向了父級作用域。參數搭配的變量是一個數組,該變量將多余的參數放入數組中。 創建一個新數組,將array與任何數組 或 值連接在一起 自行實現 concat:function(){ let length = arguments.length let re...
摘要:原文首發于源碼講解這是我們閱讀源碼的第篇博客,在這篇文章里我們來學習一下的方法。好啦,關于函數暫時就先講到這里啦。與惡龍纏斗過久自身亦成為惡龍凝視深淵過久深淵將回以凝視。 原文首發于Lodash源碼講解 這是我們閱讀Lodash源碼的第2篇博客,在這篇文章里我們來學習一下Lodash的chunk方法。 chunk函數內部依賴其他的函數,依賴的函數如下所示; slice 按照慣例,我們先...
摘要:萬條數據依賴讀源碼之從看稀疏數組與密集數組原理的原理歸結起來就是切割和放置。尺在切割之前,需要用尺確定切割的數量。容器的長度剛好與塊的數量一致。當與塊的數量相等時,表示已經切割完畢,停止切割,最后將結果返回。 以不正義開始的事情,必須用罪惡使它鞏固。——莎士比亞《麥克白》 最近很多事似乎印證了這句話,一句謊言最后要用一百句謊言來圓謊。 本文為讀 lodash 源碼的第二篇,后續文章會...
摘要:文檔地址中文文檔英文文檔源碼地址將數組拆分成多個長度的區塊,并將這些區塊組成一個新數組。如果無法被分割成全部等長的區塊,那么最后剩余的元素將組成一個區塊。 百忙之中(閑來無事)想抽點時間好好讀一下源碼,于是就選了Lodash來寫一個系列罷。讀源碼順序就按照loadsh文檔順序來。 文檔地址:中文文檔?? 英文文檔源碼地址:gayhub _.chunk(array, [size...
閱讀 1991·2023-04-26 01:41
閱讀 2468·2021-11-24 09:39
閱讀 1922·2021-11-24 09:38
閱讀 1947·2021-11-19 09:40
閱讀 3760·2021-11-11 11:02
閱讀 3294·2021-10-20 13:48
閱讀 3157·2021-10-14 09:43
閱讀 4360·2021-09-02 15:11