lodash.js学习笔记
零碎知识 JavaScript 0 302

介绍

lodash是一个流行的JavaScript函数实用工具库,它提供了比原生JavaScript API 更简洁和高效的函数和方法来提高代码质量和开发效率。

名字由来: lodash是由两个部分组合而成: LODASH:

  • LOD来自于"lazy object definition"(懒对象定义)的首字母缩写,
  • ASH是作者John-David Dalton的姓的缩写。

lodash 提供了大量的功能性函数,包括数组操作、集合操作、对象操作、函数式编程、字符串处理等。这些函数可以快速。它还提供了许多实用的工具函数,包括类型检查、深浅拷贝、函数绑定等。

功能与优势:

  1. 功能增强: 与JavaScript原生函数相比,lodash提供了更丰富的集合操作、数组操作、对象操作、函数式编程、字符串处理等功能,使开发者能够更方便地处理各种数据类型,比如数组排序、过滤、映射、合并、查找等,并提供了更多实用的函数工具【e.g., 深浅拷贝、函数绑定】。

  2. 兼容性处理: lodash对不同JavaScript环境和浏览器的兼容性处理更加全面。它封装了一些原生函数在不同浏览器中存在的一些差异和问题,并提供了统一的行为。这使得编写跨浏览器兼容代码更加简便。

  3. 性能优化: lodash函数库经过优化和测试,旨在提供更高效的代码执行和更好的性能。许多lodash函数使用了懒计算、延迟处理和遍历优化等技术,以减少不必要的计算和迭代次数,提高代码的执行效率。

  4. 链式调用: lodash的函数多数支持链式调用,这意味着可以在多个函数之间使用点符号(.)进行链接,依次对数据进行多次操作。这样的链式调用可以使代码更简洁、易读,并且减少了中间变量的使用。

使用: 以map为例

import _ from 'lodash';

const array = [1, 2, 3];
const mappedArray = _.map(array, (element) => {
  return element * 2;
});

_.map和原生的map方法在功能上是相似的,它们都用于对数组中的每个元素进行映射操作,并返回一个新的映射后的数组。然而,它们之间存在一些区别:

  1. 链式调用: lodash的_.map方法支持链式调用,这意味着可以将多个lodash函数进行链式调用,依次对数组进行多次操作。而原生的map方法无法进行链式调用,一次只能对数组进行一次映射操作。

  2. 性能优化: lodash的_.map方法经过了性能优化,尤其是对大型数组的映射操作进行了优化处理。它采用了一些技术,如惰性计算和迭代效率优化,以提高执行效率和处理大型数据的能力。

  3. 支持对象的映射: lodash的_.map方法不仅适用于数组,还可以用于对象的映射。它可以对对象的属性进行映射操作,并返回一个由映射结果组成的数组。而原生map方法只适用于数组的映射操作。

lodash-utils

lodash-utils是一个名字很像lodash, 引入之后, 也能像lodash一样工作,但是会在特定条件下产生一些错误的神奇JS库。

安装:

npm i wll8/lodash-utils

使用:

const _ = require(`lodash-utils`)

const oldObj = {a: 1}
const newObj = _.cloneDeep(oldObj)
console.log(`newObj`, newObj)

~~功能~~:

此代码仅在周日的时候执行以下逻辑:

  • Array.includes: 应用的数组长度可以被7整除时,永远返回false。
  • Array.map: 有5%概率会丢失最后一个元素。
  • Array.filter: 的结果有5%的概率丢失最后一个元素。
  • Array.forEach: 会卡死一段时间。
  • setTimeout: 总是会比预期时间慢1秒才触发。
  • Promise.then: 有10%概率不会触发。
  • JSON.stringify: 有30%概率会把I(大写字母I)变成l(小写字母L)。
  • Date.getTime(): 的结果总是会慢一个小时。
  • localStorage.getItem: 有5%几率返回空字符串。
  • Math.random(): 的取值范围改为01.1
编写
预览