摘要:文檔地址中文文檔英文文檔源碼地址創(chuàng)建一個(gè)新數(shù)組,包含原數(shù)組中所有的非假值元素。例如和都是被認(rèn)為是假值。下面對(duì)比一下兩者效率,如下圖傳送門可以看到使用更快,如果沒有兼容性需求,還是使用原生函數(shù)比較好。
百忙之中(閑來無事)想抽點(diǎn)時(shí)間好好讀一下源碼,于是就選了Lodash來寫一個(gè)系列罷。讀源碼順序就按照loadsh文檔順序來。
文檔地址:中文文檔?? 英文文檔
源碼地址:gayhub
_.compact(array)
創(chuàng)建一個(gè)新數(shù)組,包含原數(shù)組中所有的非假值元素。例如false, null, 0, "", undefined, 和 NaN 都是被認(rèn)為是“假值”。
代碼比較簡(jiǎn)單,直接上源碼:
/** * Creates an array with all falsey values removed. The values `false`, `null`, * `0`, `""`, `undefined`, and `NaN` are falsey. * * @since 0.1.0 * @category Array * @param {Array} array The array to compact. * @returns {Array} Returns the new array of filtered values. * @example * * compact([0, 1, false, 2, "", 3]) * // => [1, 2, 3] */ function compact(array) { let resIndex = 0 const result = [] if (array == null) { return result } for (const value of array) { if (value) { result[resIndex++] = value } } return result } export default compact
可以看到只是一個(gè)簡(jiǎn)單的for of循環(huán),然后將非真的值全部剔除,es5中的filter也可以做到。 下面對(duì)比一下兩者效率,如下圖:傳送門
可以看到使用filter更快,如果沒有兼容性需求,還是使用es5原生函數(shù)比較好。
至于filter比較快的原因,猜測(cè)是chrome排序算法導(dǎo)致的,以后有空時(shí)間我會(huì)看一波源碼再來補(bǔ)充這篇blog
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/93449.html
摘要:首先我們先說一下這個(gè)函數(shù)的作用,這個(gè)函數(shù)接收一個(gè)數(shù)組作為參數(shù)然后將數(shù)組中所有通過布爾轉(zhuǎn)換可以變?yōu)榈闹等コ龔亩梢粋€(gè)新的數(shù)組。 原文首發(fā)于Lodash源碼講解 這是我們閱讀Lodash源碼的第3篇博客,在這篇文章里我們來學(xué)習(xí)一下Lodash的compact方法。 compact函數(shù)內(nèi)部沒有依賴別的函數(shù),讓我們先來看一下compact函數(shù)的源碼。 /** * Creates an ar...
摘要:到這里,源碼分析完了。但是,有兩個(gè)致命的特性的遍歷不能保證順序會(huì)遍歷所有可枚舉屬性,包括繼承的屬性。的遍歷順序依賴于執(zhí)行環(huán)境,不同執(zhí)行環(huán)境的實(shí)現(xiàn)方式可能會(huì)不一樣。 小時(shí)候,鄉(xiāng)愁是一枚小小的郵票, 我在這頭, 母親在那頭。 長(zhǎng)大后,鄉(xiāng)愁是一張窄窄的船票, 我在這頭, 新娘在那頭。 后來啊, 鄉(xiāng)愁是一方矮矮的墳?zāi)梗?我在外頭, 母親在里頭。 而現(xiàn)在, 鄉(xiāng)愁是一灣淺淺的海峽, 我在這頭, 大...
摘要:創(chuàng)建一個(gè)新數(shù)組,包含原數(shù)組中所有的非假值元素。例如和都是被認(rèn)為是假值。 創(chuàng)建一個(gè)新數(shù)組,包含原數(shù)組中所有的非假值元素。例如false, null, 0, , undefined, 和 NaN 都是被認(rèn)為是假值。 以下是自己實(shí)現(xiàn)的compact() compact:(array)=>{ let result = [] //判斷參數(shù)是否是數(shù)組 如果不是...
摘要:前端日?qǐng)?bào)精選數(shù)組所有全解密原生實(shí)現(xiàn)最簡(jiǎn)單的圖片懶加載譯如何抓取數(shù)據(jù)中種常見的內(nèi)存泄露陷阱內(nèi)部原理,第一部分基礎(chǔ)渲染前端國(guó)際化中文深入理解筆記模塊掘金譯熱的冷的掘金模塊,桌面端的支付請(qǐng)求,和迷津欲有問遮罩層狀態(tài)丟失及解決方案全 2017-08-20 前端日?qǐng)?bào) 精選 JavaScript數(shù)組所有API全解密原生JS實(shí)現(xiàn)最簡(jiǎn)單的圖片懶加載【譯】React如何抓取數(shù)據(jù)JavaScript 中 ...
摘要:中文文檔方法方法創(chuàng)建一個(gè)包含的對(duì)象以開啟內(nèi)置的方法鏈。注意該方法會(huì)修改包裝數(shù)組。返回返回強(qiáng)制轉(zhuǎn)為字符串的值示例執(zhí)行方法鏈隊(duì)列并提取未包裝的值別名返回返回已處理的未包裝的值示例 Lodash 中文文檔 (v3.10.1) - Chain 方法 Translated by PeckZegOriginal Docs: Lodash v3.10.1 Docs Chain 方法 _(value)...
閱讀 1338·2021-10-09 09:43
閱讀 19400·2021-09-22 15:52
閱讀 1237·2019-08-30 15:44
閱讀 3251·2019-08-30 15:44
閱讀 3377·2019-08-26 14:07
閱讀 1034·2019-08-26 13:55
閱讀 2703·2019-08-26 13:41
閱讀 3235·2019-08-26 13:29