lodash常用方法合集

安装lodash

建议安装lodash-es,lodash-es 是 lodash 的 es modules 版本 ,是着具备 ES6 模块化的版本,体积小。按需引入。

示例

javascript 复制代码
npm i lodash-es
复制代码
import { chunk,compact } from 'lodash-es'; /**按需引入*/

1.chunk 数组分组

chunk(array, [size=1])

参数

array (Array): 需要处理的数组

size=1\] (number): 每个数组区块的长度 \*/ #### 示例 ```javascript const arr = [2, 4, 6, 8, 10]; const newArr = chunk(arr, 3); console.log("newArr:", newArr); // [ [ 2, 4, 6 ], [ 8, 10 ] ] ``` ### 2.compact 过滤假值 创建一个新数组,包含原数组中所有的非假值元素。例如false, null,0, "", undefined, 和 NaN 都是被认为是"假值"。 compact(array) ##### 参数 array (Array): 待处理的数组 \*/ #### 示例 ```javascript const arr = [0, 1, false, 2, "", 3]; const newArr = compact(arr); console.log("newArr:", newArr); // [ 1, 2, 3 ] ``` ### 3.`differenceBy 根据指定的规则去除指定的值` `differenceBy(array, [values], [iteratee=_.identity])` 调用`array` 和 `values` 中的每个元素以产生比较的标准。 结果值是从第一数组中选择。iteratee 会调用一个参数:*(value)* 。(注:首先使用迭代器分别迭代`array` 和 `values`中的每个元素,返回的值作为比较值)。 ##### 参数 1. `array` *(Array)*: 要检查的数组。 2. `[values]` *(...Array)*: 排除的值。 3. `[iteratee=_.identity]` *(Array\|Function\|Object\|string)*: iteratee 调用每个元素。示例 #### 示例: ```javascript differenceBy([3.1, 2.2, 1.3], [4.4, 2.5], Math.floor); // => [3.1, 1.3] /*上面的代码实际上是两个数组根据第三个参数Math.floor进行迭代处理, 最后两个数组根据[3,2,1]和[4,2]进行比较*/ // The `_.property` iteratee shorthand. differenceBy([{ 'x': 2,'y':1 }, { 'x': 1,'y':2 }], [{ 'x': 1,'y':1 }], 'y'); // => [{ 'x': 1,'y':2 }] /*上面的代码实际上是两个数组根据第三个参数'y'进行迭代处理, 最后两个数组根据 键'y' 进行比较*/ ``` ### 4.`differenceWith 根据比较器去除指定的值` `differenceWith(array, [values], [comparator])` 它接受一个 `comparator` (注:比较器),它调用比较`array`,`values`中的元素。 结果值是从第一数组中选择。comparator 调用参数有两个:*(arrVal, othVal)*。 ##### 参数 1. `array` *(Array)*: 要检查的数组。 2. `[values]` *(...Array)*: 排除的值。 3. `[comparator]` *(Function)*: comparator 调用每个元素。 #### 示例 ```javascript var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; differenceWith(objects, [{ 'x': 1, 'y': 2 }], isEqual); // => [{ 'x': 2, 'y': 1 }] /*以上代码根据比较器isEqual比较两个数组里的值是否相等(不比较地址), 是的话去除*/ ``` ### 5. `tail `获取除了`array`数组第一个元素以外的全部元素 `tail(array)` ##### 参数 1. `array` *(Array)*: 要检索的数组。 示例 ```javascript const arr = [{ name: "xiaoming" }, { name: "dog" }, { name: "cat" }]; const newArr = tail(arr); console.log(newArr); //[ { "name": "dog" }, { "name": "cat" } ] ``` ### 6.`unionBy 合并数组,并且根据指定的规则去重` `unionBy([arrays], [iteratee=_.identity])` ##### 参数 1. `[arrays]` *(...Array)*: 要检查的数组。 2. `[iteratee=_.identity]` *(Array\|Function\|Object\|string)*: 迭代函数,调用每个元素。 #### 示例 ```javascript const arr = [{ name: "xiaoming" }]; const newArr = unionBy( arr,[{ name: "dog" }, { name: "xiaoming" }],"name" ); console.log(newArr); //[ { "name": "xiaoming" }, { "name": "dog" } ] unionBy([2.1], [1.2, 2.3], Math.floor); // => [2.1, 1.2] ``` ### 7.`unionWith 合并数组,根据比较器去重` `unionWith([arrays], [comparator])` ##### 参数 1. `[arrays]` *(...Array)*: 要检查的数组。 2. `[comparator]` *(Function)*: 比较函数,调用每个元素。 ```javascript var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; unionWith(objects, others, isEqual); // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] ``` ### 8.size 检测数据长度 `size(collection)` ##### 参数 1. `collection` *(Array\|Object\|String)*: 要检查的数据 #### 示例 ```javascript size([1, 2, 3]); // => 3 size({ 'a': 1, 'b': 2 }); // => 2 size('pebbles'); // => 7 ``` ### 9.`sortBy 数组对象排序` `sortBy(collection, [iteratees=[_.identity]])` ##### 参数 1. `collection` *(Array\|Object)*: 用来迭代的集合。 2. `[iteratees=[_.identity]]` *(...(Array\|Array\[\]\|Function\|Function\[\]\|Object\|Object\[\]\|string\|string\[\]))*: 这个函数决定排序。 ```javascript const users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 34 } ]; sortBy(users, function(o) { return o.user; }); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] sortBy(users, 'age' }); // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] sortBy(users, ['user', 'age']); // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] sortBy(users, 'user', function(o) { return Math.floor(o.age / 10); }); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] ``` ### 10.clone 浅拷贝 `clone(value)` ##### 参数 1. `value` *(\*)*: 要拷贝的值 示例 ```javascript const objects = [{ 'a': 1 }, { 'b': 2 }]; var shallow = clone(objects); console.log(shallow[0] === objects[0]); // => true ``` ### 11.`cloneDeep 深拷贝` `cloneDeep(value)` ##### 参数 1. `value` *(\*)*: 要深拷贝的值。 #### 示例 ```javascript const objects = [{ 'a': 1 }, { 'b': 2 }]; const deep = cloneDeep(objects); console.log(deep[0] === objects[0]); // => false ``` ### 12.`isEqual `深比较来确定两者的值是否相等 `isEqual(value, other)` ##### 参数 1. `value` *(\*)*: 用来比较的值。 2. `other` *(\*)*: 另一个用来比较的值。 ```javascript const arr = [ { name: "xiaoming" }, { name: "dog" }, { name: "cat", info: { address: "翻斗花园" } }, ]; const newArr = [ { name: "xiaoming" }, { name: "dog" }, { name: "cat", info: { address: "翻斗花园" } }, ]; console.log(isEqual(arr, newArr)); // true arr === newArr; // => false ``` ### 13. 二次封装防抖,节流 ```javascript import {throttle,debounce} from 'lodash-es'; //节流 export const throttled = throttle( (fun, ...args) => fun(...args), 1500, { leading: true, trailing: false } ); //防抖 export const debounced = debounce( (fun, ...args) => fun(...args), 500 ); //页面使用 ```

相关推荐
demonlg011230 分钟前
Go 语言标准库中Channels,Goroutines详细功能介绍与示例
开发语言·后端·golang
幼儿园技术家31 分钟前
什么是RESTful 或 GraphQL?
前端
Lonwayne40 分钟前
当编程语言有了人格
java·javascript·c++·python·php
秋风&萧瑟1 小时前
【QT】新建QT工程(详细步骤)
开发语言·qt
echola_mendes1 小时前
LangChain 结构化输出:用 Pydantic + PydanticOutputParser 驯服 LLM 的“自由发挥”
服务器·前端·数据库·ai·langchain
拉不动的猪1 小时前
刷刷题46(常见的三种js继承类型及其优缺点)
前端·javascript·面试
关注我:程序猿之塞伯坦1 小时前
JavaScript 性能优化实战:突破瓶颈,打造极致 Web 体验
开发语言·前端·javascript
兰德里的折磨5501 小时前
对于后端已经实现逻辑了,而前端还没有设置显示的改造
前端·vue.js·elementui
hikktn2 小时前
【开源宝藏】30天学会CSS - DAY9 第九课 牛顿摆动量守恒动画
前端·css·开源
郭涤生2 小时前
第二章:影响优化的计算机行为_《C++性能优化指南》notes
开发语言·c++·笔记·性能优化