HOW - Lodash 使用指南和源碼學習

目錄

  • 一、什么是 lodash
  • 二、為什么需要 Lodash
  • 三、API 分類
    • Array
    • Collection
    • Date
    • Function
    • Lang
    • Math
    • Number
    • Object
    • String
    • Seq
    • Util

我們經常在項目里遇到 Lodash 函數的引入,如:

  • debounce(Function)
  • cloneDeep(Lang)
  • isNull(Lang)
  • isUndefined(Lang)
  • isNil(Lang)
  • isEqual(Lang)
  • range(Util)
  • uniqBy(Array)
  • compact(Array)
  • flattenDeep(Array)
  • truncate(String)
  • omit, pick(Object)
  • merge(Object)
  • partition(Collection)

一、什么是 lodash

A modern JavaScript utility library delivering modularity, performance & extras.

Lodash 是一個 JavaScript 實用工具庫,提供了許多常用的函數方法,用于簡化 JavaScript 編程中的常見任務。它提供了對數組、集合、對象、函數、字符串等數據類型的操作和處理方法,以及一些實用的輔助函數。

主要特點包括:

  1. 高性能: Lodash 專注于性能優化,其方法實現都經過了精心設計和測試,以保證在各種環境下都能提供高效的性能。
  2. 跨瀏覽器兼容性: Lodash 提供了對于不同瀏覽器和 JavaScript 運行環境的兼容支持,可以在各種瀏覽器和環境中安全使用。
  3. 模塊化: Lodash 的模塊化設計使得你可以按需引入所需的方法,而不必一次性引入整個庫。這有助于減小項目的體積,并提高應用程序的性能。
  4. 社區活躍: Lodash 擁有龐大的用戶群體和活躍的社區支持,你可以在社區中獲得豐富的資源、文檔和示例。

二、為什么需要 Lodash

之前有人提過:You-Dont-Need-Lodash-Underscore。理由是隨著 ECMAScript 發展,很多語言特性已經能夠實現原生支持,當不需要兼容較早的瀏覽器,其實可以不引入 Lodash 或 underscore。

但是,Lodash 支持非常多性能提升明顯和兼容性更優的特性。甚至,ECMAScript 語言標準也在某種程度上向 Lodash 實現靠近。

Lodash makes JavaScript easier by taking the hassle out of working with arrays, numbers, objects, strings, etc.

Lodash’s modular methods are great for:

  • Iterating arrays, objects, & strings
  • Manipulating & testing values
  • Creating composite functions

因此,Lodash API 的底層實現也非常值得開發者去學習。

三、API 分類

Array

這些函數用于對數組進行操作和處理,包括對數組的遍歷、篩選、映射、合并、排序等操作。例如 .map()、.filter()、.reduce()、.concat()、_.sortBy() 等。

Collection

這些函數用于對集合數據進行操作,包括對象、數組和類數組對象等,它們提供了對集合中的元素進行遍歷、篩選、映射等操作。例如 .forEach()、.groupBy()、_.countBy() 等。

Date

這些函數用于處理日期和時間,包括獲取當前時間、格式化日期、比較日期、添加或減去時間等操作。例如 .now()、.format()、.isEqual()、.add()、_.subtract() 等。

Function

這些函數用于對函數進行操作和處理,包括函數的柯里化、節流、防抖、組合等操作。例如 .curry()、.throttle()、.debounce()、.flow() 等。

Lang

這些函數用于對基本數據類型和語言特性進行操作和判斷,例如判斷數據類型、比較值相等性、生成唯一 ID 等操作。例如 .isArray()、.isEqual() 等。

Math

這些函數用于數學運算和處理,包括計算數組中的最大值、最小值、求和、平均值等操作。例如 .max()、.min()、.sum()、.mean() 等。

Number

這些函數用于處理數字類型的數據,包括數字的格式化、范圍限制、四舍五入、精度處理等操作。例如 .toNumber()、.clamp()、.round()、.roundTo() 等。

Object

這些函數用于對對象進行操作和處理,包括對象的克隆、合并、轉換、遍歷等操作。例如 .clone()、.merge()、.pick()、.mapValues() 等。

String

這些函數用于處理字符串,包括字符串的格式化、拆分、連接、截取、大小寫轉換等操作。例如 .trim()、.split()、.join()、.truncate()、_.lowerCase() 等。

Seq

這些函數用于創建鏈式調用的序列,允許對集合進行一系列的鏈式操作,例如映射、過濾、排序等操作。它們提供了鏈式調用的方式來處理數據,使得代碼更加清晰和易于理解。例如 _.chain()

Util

這些函數提供了一些實用的工具函數,用于輔助開發者進行調試、性能優化等操作。例如 .times()、.noop()、_.uniqueId() 等。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/22148.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/22148.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/22148.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

106、python-第四階段-3-設計模式-單例模式

不是單例類,如下: class StrTools():pass str1StrTools() str2StrTools() print(str1) print(str2) 運用單例,先創建一個test.py class StrTools():pass str1StrTools()然后創建一個hello.py,在這個文件中引用test.py中的對象&a…

JVM-JAVA-雙親委派機制

雙親委派機制 雙親委派機制Tomcat打破雙親委派機制 雙親委派機制 雙親委派機制,加載某個類時會先委托父加載器尋找目標類,找不到再委托上層父加載器加載,如果所有父加載器在自己的加載類路徑下都找不到目標類,則在自己的類加載路徑…

網絡攻擊的常見形式

開篇 本篇文章來自于《網絡安全 ——技術與實踐》的學習整理筆記。 正篇 口令竊取 相比于利用系統缺陷破壞網絡系統,最容易的方法還是通過竊取用戶的口令進入系統。因為人們傾向于選擇很糟糕的口令作為登錄密碼,所以口令猜測很容易成功。通常&#xff0…

C語言:基礎知識

創作不易,友友們給個三連吧 一、C語?的基本概念與發展歷史 1.1 人和計算機進行交流的語言 通常,我們使用英語、中文等語言來進行兩個人之間的交流。這意味著當我們想要和他人進行交流時,我們需要一種語言來表達自己的感受。同樣的&#xf…

10分鐘了解ERP軟件系統

ERP(Enterprise Resource Planning,企業資源規劃)軟件是一種集成的管理信息系統,旨在通過優化公司內部資源的分配和使用,提高企業的運營效率和管理水平。ERP系統通常包含多個功能模塊,這些模塊覆蓋了企業運…

喜訊!易知微入選2024年第一批浙江省專精特新中小企業

近日,杭州市經濟和信息化局對2024年第一批浙江省專精特新中小企業名單進行公示。 圖片 經過專業化程度、技術創新與研發能力、品牌影響力、經營管理水平等多方面因素的考量篩選,杭州易知微科技有限公司榮幸地入選了2024年第一批浙江省專精特新中小企業…

c語言:自定義類型(枚舉、聯合體)

前言: c語言中中自定義類型不僅有結構體,還有枚舉、聯合體等類型,上一期我們詳細講解了結構體的初始化,使用,傳參和內存對齊等知識,這一期我們來介紹c語言中的其他自定義類型枚舉和聯合體的知識。 1.位段 …

java -jar命令常見使用方法

1、基本用法: java -jar filename.jar這是最簡單的用法,直接指定要運行的 JAR 文件的名稱(包括 .jar 擴展名)。Java 虛擬機(JVM)將加載并執行 JAR 文件中的主類(在 JAR 文件的 META-INF/MANIFE…

微服務:Rabbitmq利用jackson序列化消息為Json發送并接收

消息序列化 Spring默認會把你發送的消息通過JDK序列化為字節發送給MQ&#xff0c;接收消息的時候&#xff0c;再把字節反序列化為Java對象。 我們可以配置JSON方式來序列化&#xff0c;這樣體積更小&#xff0c;可讀性更高。 引入依賴&#xff1a; <dependency><g…

燈珠對LED顯示屏性能的影響

LED顯示屏作為現代顯示技術的重要組成部分&#xff0c;廣泛應用于廣告、信息發布、交通指示等領域。燈珠作為LED顯示屏的核心組件&#xff0c;對其性能有著決定性的影響。本文將從八個關鍵方面探討燈珠對LED顯示屏性能的影響。 1. 視角 LED顯示屏的視角由燈珠的視角決定。戶外顯…

原型鏈、閉包、手寫一個閉包函數、 閉包有哪些優缺點、原型鏈繼承

什么是原型鏈&#xff1f; 原型鏈是一種查找規則 為對象成員查找機制提供一個方向 因為構造函數的 prototype 和其實例的 __ proto __ 都是指向原型對象的 所以可以通過__proto__ 查找當前的原型對象有沒有該屬性, 沒有就找原型的原型, 依次類推一直找到Object( null ) 為…

【YOLOv9改進[Conv]】使用YOLOv10的空間通道解耦下采樣SCDown模塊替換部分CONv的實踐 + 含全部代碼和詳細修改內容

本文將使用YOLOv10的空間通道解耦下采樣SCDown模塊替換部分CONv的實踐 ,文中含全部代碼和詳細修改內容。 目錄 一 YOLOv10 1 空間通道解耦下采樣 2 可視化

UFS協議—新手快速入門(二)【5-6】

目錄 五、UFS協議棧 六、UFS技術演進與詳解 1、UFS應用層 設備管理器 任務管理器 2、UFS傳輸層 3、UFS互聯層 UFS協議—新手快速入門&#xff08;一&#xff09;【1-4】 五、UFS協議棧 UFS&#xff08;Universal Flash Storage&#xff09;協議是針對固態存儲設備&…

渡眾機器人自動駕駛小車運行Autoware 實現港口物流運輸

Autoware 是一個開源的自動駕駛軟件堆棧&#xff0c;提供了豐富的功能和模塊&#xff0c;用于實現自動駕駛車輛的感知、定位、規劃和控制等功能。北京渡眾機器人公司將多款自動駕駛小車在多場景運行Autoware &#xff0c;它可以實現以下功能&#xff1a; 1. 感知&#xff1a;利…

Spark的性能調優——RDD

前言 RDD 是 Spark 對于分布式數據集的抽象&#xff0c;每一個 RDD 都代表著一種分布式數據形態。比如 lineRDD&#xff0c;它表示數據在集群中以行&#xff08;Line&#xff09;的形式存在&#xff1b;而 wordRDD 則意味著數據的形態是單詞&#xff0c;分布在計算集群中。 參…

職稱繼續教育--專業課2

單選題&#xff08;共10題&#xff0c;每題3分&#xff09; 1、根據本講&#xff0c;“水十條”總體框架包括&#xff08;&#xff09;個層次。 C、5 2、根據“水十條”目標指標層&#xff0c;到2020年&#xff0c;地級及以上城市建成區的黑臭水體控制&#xff08;&#xff09…

數據挖掘綜合案例-家用熱水器用戶行為分析與事件識別

文章目錄 1. 背景與挖掘目標2. 分析方法與過程3. 數據分析3.1 數據探索分析3. 2 數據預處理1. 屬性約束2. 劃分用水事件3. 確定單次用水事件時長閾值4. 屬性構造5.篩選候選洗浴事件 3.3 模型構建3.4 模型檢驗 4. 思考總結 1. 背景與挖掘目標 隨著國內大家電品牌的進入和國外品…

了解CAN功能

了解CAN功能&#xff0c;學習CAN功能&#xff0c;理解CAN和串口的區別&#xff0c;以及它和RS485的相似之處。 1、“多主機”特性 在CAN網絡通訊中&#xff0c;無需其它設備同意&#xff0c;每個CAN設備都可以主動向外發送數據&#xff0c;且所有設備都會收到數據&#xff0c…

【面試干貨】 非關系型數據庫(NoSQL)與 關系型數據庫(RDBMS)的比較

【面試干貨】 非關系型數據庫&#xff08;NoSQL&#xff09;與 關系型數據庫&#xff08;RDBMS&#xff09;的比較 一、引言二、非關系型數據庫&#xff08;NoSQL&#xff09;2.1 優勢 三、關系型數據庫&#xff08;RDBMS&#xff09;3.1 優勢 四、結論 &#x1f496;The Begin…

孵化器補貼政策提問模板

對于一些需要創業的人來說&#xff0c;找場地是非常非常難的&#xff0c;一個好的場地能夠提高創業的成功率&#xff0c;下面這些內容對于孵化器產業園的政策有一個好的提問&#xff0c;可以幫助你們了解這個孵化器合不合適。需要創業的人可以收藏 某孵化器政策示例 提問模板 …