loadsh.js 常用工具函数札记

1,673 阅读5分钟

loadsh 简介

Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。

安装

浏览器环境

<script src="lodash.js"></script>

通过 npm:

$ npm i -g npm
$ npm i --save lodash

Node.js:

// Load the full build.
var _ = require('lodash');
// Load the core build.
var _ = require('lodash/core');
// Load the FP build for immutable auto-curried iteratee-first data-last methods.
var fp = require('lodash/fp');
 
// Load method categories.
var array = require('lodash/array');
var object = require('lodash/fp/object');
 
// Cherry-pick methods for smaller browserify/rollup/webpack bundles.
var at = require('lodash/at');
var curryN = require('lodash/fp/curryN');

为什么选择 Lodash?

Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。 Lodash 的模块化方法 非常适用于:

  • 遍历 array、object 和 string
  • 对值进行操作和检测
  • 创建符合功能的函数

数组

_.drop: 创建一个切片数组,去除array前面的n个元素。(n默认值为1。)

_.flatten: 减少一级array嵌套深度。

_.flattenDeep: 将array递归为一维数组。

_.nth: 获取array数组的第n个元素。如果n为负数,则返回从数组结尾开始的第n个元素。

_.reverse: 反转array,使得第一个元素变为最后一个元素,第二个元素变为倒数第二个元素,依次类推。

_.slice: 裁剪数组array,从 start 位置开始到end结束,但不包括 end 本身的位置。

_.remove: 移除数组中predicate(断言)返回为真值的所有元素,并返回移除元素组成的数组。

_.pull:移除数组array中所有和给定值相等的元素,使用SameValueZero 进行全等比较。

_.pullAt: 根据索引 indexes,移除array中对应的元素,并返回被移除元素的数组。

_.fill: 使用 value 值来填充(替换) array,从start位置开始, 到end位置结束(但不包含end位置)。

_.concat: 创建一个新数组,将array与任何数组 或 值连接在一起。

集合

_.groupBy: 创建一个对象,返回一个组成聚合的对象。

_.keyBy: 创建一个对象组成, 返回一个组成聚合的对象。

_.flatMap: 创建一个扁平化(注:同阶数组)的数组。

_.flatMapDeep: 这个方法类似_.flatMap,不同之处在于它会继续扁平化递归映射的结果。

_.reduce: 压缩集合为一个值, 返回累加后的值。

_.every: 检查集合内是否所有元素都满足一个条件函数。

_.some : 检查集合内是否存在元素都满足一个条件函数。

函数

_.after: _.before的反向函数;此方法创建一个函数,当他被调用n或更多次之后将马上触发func

_.before: 创建一个调用func的函数,通过this绑定和创建函数的参数调用func,调用次数不超过 n 次。 之后再调用这个函数,将返回一次最后调用func的结果。

_.debounce :创建一个 debounced(防抖动)函数, 该函数会从上一次被调用后,延迟 xxxx毫秒后调用 func 方法。

_.throttle: 创建一个节流函数,在 wait 秒内最多执行 func 一次的函数。

语言

_.clone :创建一个 value 的浅拷贝。

_.cloneDeep : 这个方法类似_.clone,除了它会递归拷贝 value

_.isEmpty : 检查 value 是否为一个空对象,集合,映射或者set。

_.isEqual :执行深比较来确定两者的值是否相等。

_.isArray : 检查 value 是否是 Array 类对象。

_.isNaN: 检查 value 是否是 NaN

_.isNil : 检查 value 是否是 null 或者 undefined

_isNull: 检查 valuealue 是否是 null

_.isUndefined: 检查 value 是否是 undefined.

_.isObject:检查 value 是否为 Objectlanguage type

_.toArray : 转换 value 为一个数组。

_.toFinite : 转换 value 为一个有限数字。

_.toInteger: 转换 value 为一个整数。

数学

_.ceil: 根据 precision(精度) 向上舍入 number

_.floor: 根据 precision(精度) 向下舍入 number

_.min: 计算 array 中的最小值。 如果 array 是 空的或者假值将会返回 undefined

_.max: 计算 array 中的最大值。 如果 array 是 空的或者假值将会返回 undefined

_.mean: 计算 array 的平均值。

数字

_.random: 产生一个包括 lowerupper 之间的数。

对象

_.create:创建一个继承 prototype 的对象。 如果提供了 prototype,它的可枚举属性会被分配到创建的对象上。

_.assign:分配来源对象的可枚举属性到目标对象上。 来源对象的应用规则是从左到右,随后的下一个对象的属性会覆盖上一个对象的属性。

_.forIn: 使用 iteratee 遍历对象的自身和继承的可枚举属性。

_.has: 检查 path 是否是object对象的直接属性。

_.keys: 创建一个 object 的自身可枚举属性名为数组。

_.valuse: 创建 object 自身可枚举属性的值为数组。

_.merge: 该方法类似_.assign, 除了它递归合并 sources 来源对象自身和继承的可枚举属性到 object 目标对象。

_.pick: 创建一个从 object 中选中的属性的对象。

_.omit: 反向版_.pick; 这个方法一个对象,这个对象由忽略属性之外的object自身和继承的可枚举属性组成。

字符串

_.camelCase: 转换字符串string驼峰写法

_.escape :返回转义后的字符串。

_.trim: 从string字符串中移除前面和后面的 空格 或 指定的字符。

_.split: 根据separator 拆分字符串string

_.template : 创建一个预编译模板方法,可以插入数据到模板中 "interpolate" 分隔符相应的位置。

_.words : 拆分字符串string中的词为数组 。

_.replace: 替换string字符串中匹配的pattern为给定的replacement

实用函数

_.flow : 创建一个函数。 返回的结果是调用提供函数的结果,this 会绑定到创建函数。 每一个连续调用,传入的参数都是前一个函数返回的结果。

_.times: 调用 iteratee n 次,每次调用返回的结果存入到数组中。 iteratee 调用入1个参数: (index)

_.overEvery: 建一个函数,传入提供的参数的函数并调用 predicates 判断是否 全部 都为真值。

_.overSome: 创建一个函数,传入提供的参数的函数并调用 predicates 判断是否 存在 有真值。

_.mixin: 添加来源对象自身的所有可枚举函数属性到目标对象。 如果 object 是个函数,那么函数方法将被添加到原型链上。

_.nthArg : 创建一个函数,这个函数返回第 n 个参数。如果 n为负数,则返回从结尾开始的第n个参数。

后记

我是彤爱,一个在沉溺于寂寞代码海洋里的前端程序员👨🏻‍💻

欢迎各位大佬的赐教🙏

期待与同样在努力摸索的小伙伴们交流🙌