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.mzph.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;可以帮助你们了解这个孵化器合不合适。需要创业的人可以收藏 某孵化器政策示例 提问模板 …