lodash常用方法合集

安装lodash

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

示例

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

1.chunk 数组分组

chunk(array, [size=1])

参数

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

[size=1] (number): 每个数组区块的长度 */

示例

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): 待处理的数组 */

示例

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 调用每个元素。示例

 示例:

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 (注:比较器),它调用比较arrayvalues中的元素。 结果值是从第一数组中选择。comparator 调用参数有两个:(arrVal, othVal)

参数
  1. array (Array): 要检查的数组。
  2. [values] (...Array): 排除的值。
  3. [comparator] (Function): comparator 调用每个元素。

示例

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): 要检索的数组。

示例

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): 迭代函数,调用每个元素。

示例

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): 比较函数,调用每个元素。
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): 要检查的数据

示例

size([1, 2, 3]);
// => 3size({ 'a': 1, 'b': 2 });
// => 2size('pebbles');
// => 7

9.sortBy 数组对象排序

sortBy(collection, [iteratees=[_.identity]])

参数
  1. collection (Array|Object): 用来迭代的集合。
  2. [iteratees=[_.identity]] (...(Array|Array[]|Function|Function[]|Object|Object[]|string|string[])): 这个函数决定排序。
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 (*): 要拷贝的值

示例

const objects = [{ 'a': 1 }, { 'b': 2 }];var shallow = clone(objects);
console.log(shallow[0] === objects[0]);
// => true

11.cloneDeep 深拷贝

cloneDeep(value)

参数
  1. value (*): 要深拷贝的值。

示例

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 (*): 另一个用来比较的值。
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));
// truearr === newArr;
// => false

13. 二次封装防抖,节流

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
);//页面使用
<button @click=throttled(handleQuery,name,id)>查询</button>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/115889.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

redis一主一从搭建

1.复制一份redis.conf并将6380都改成6379 [redist3-dtpoc-dtpoc-web06 conf]$ cp redis.conf redis_6380.conf [redist3-dtpoc-dtpoc-web06 conf]$ vi redis_6380.conf port 6380 daemonize yes pidfile "/home/redis/redis/logs/redis_6380.pid" logfile "/hom…

(十一)Python模块和包

前面章节中&#xff0c;我们已经使用了很多模块&#xff08;如 string、sys、os 等&#xff09;&#xff0c;通过向程序中导入这些模块&#xff0c;我们可以使用很多“现成”的函数实现想要的功能。 那么&#xff0c;模块到底是什么&#xff0c;模块内部到底是什么样子的&…

Kafka 自动配置部署信息的脚本记录

自动配置 Kafka 整理服务器内容时&#xff0c;发现一个测试 Kafka 的的一个脚本&#xff0c;它可以自动部署 Kafka &#xff0c;指定三个参数&#xff0c;完成 Kafka 的配置过程。 basePath$1 brokerId$2 zookeeperConnect$3 localIpifconfig |grep inet| awk {print $2}| he…

【leetcode】独特的电子邮件地址

题目描述 每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成&#xff0c;以 ‘’ 符号分隔。除小写字母之外&#xff0c;电子邮件地址还可以含有一个或多个 ‘.’ 或 ‘’ 。 例如&#xff0c;在 aliceleetcode.com中&#xff0c; alice 是 本地名 &#xff0c;而 lee…

【网络】HTTPS讲解(侧重于加密、秘钥、证书的讲解)

HTTPS讲解 前言正式开始安全HTTP和HTTPS的关系什么是加密和解密为什么要加密运营商劫持中间人 常⻅的加密⽅式对称加密⾮对称加密 数据摘要数字签名HTTPS 的⼯作过程⽅案 1 - 只使⽤对称加密&#xff08;不可靠&#xff09;⽅案 2 - 只使⽤⾮对称加密&#xff08;不可靠&#x…

js鼠标点击添加图标并获取图标的坐标值

给这个图片添加摄像头图标&#xff0c;并获取图标的坐标值&#xff0c;也就是图标的css样式是positon:absolute,获取left和top的值。 图片1 思路是这样的&#xff0c;获取这里的长度&#xff0c; 图片2 1.鼠标点击时距浏览器的左边距离和上边距离&#xff0c;相当于(0,0)坐标 …

Kotlin函数作为参数指向不同逻辑(二)

Kotlin函数作为参数指向不同逻辑&#xff08;二&#xff09; fun sum(): (Int, Int) -> Int {return { a, b -> (a b) } }fun multiplication(): (Int, Int) -> Int {return { a, b -> (a * b) } }fun math(a: Int, b: Int, foo: (Int, Int) -> Int): Int {ret…

DDOS直接攻击系统资源

DDOS ——直接攻击系统资源 思路&#xff1a; 攻击机利用三次握手机制&#xff0c;产生大量半连接&#xff0c;挤占受害者系统资源&#xff0c;使其无法正常提供服务。 1、先体验下受害者的正常网速。在受害者主机上执行以下命令 (1)开启Apache。 systemctl start apache2 (2…

使用 Requests 库和 PHP 的下载

以下是一个使用 Requests 库和 PHP 的下载器程序&#xff0c;用于从 www.people.com.cn 下载音频。此程序使用了 https://www.duoip.cn/get_proxy 这段代码。 import requests from bs4 import BeautifulSoup import pafy import timedef get_proxy():url "https://www.…

基于架构软件设计-架构真题(五十八)

“41”视图主要描述系统逻辑架构。其中&#xff08;&#xff09;视图用于描述对象模型&#xff0c;并说明系统应该为用户提供哪些服务。 过程开发物理逻辑 解析&#xff1a; “41”有逻辑视图、过程视图、物理视图、开发视图和架构的描述。 逻辑视图&#xff1a;设计的对象…

开发趋势 Java Lambda 表达式 第二篇

开发趋势 Java Lambda 表达式 第二篇 Lambda 的发展史 Java Lambda 表达式是在 Java 8 版本中引入的重要特性&#xff0c;它描述了一种更简洁、更灵活的方式来处理函数式编程。 在 Java 8 之前&#xff0c;要实现函数式编程&#xff0c;需要通过匿名类实现接口的方式。这样的…

QFSFileEngine::open: No file name specified解决方案

问题 使用QFile类进行文件操作时&#xff0c;报错QFSFileEngine::open: No file name specified。 原因 QFile::open: No file name specified是Qt中的一个错误消息&#xff0c;提示没有指定文件名导致文件无法打开。这个错误通常出现在使用QFile::open()函数时没有提供有效…

vue重修之自定义项目、ESLint和代码规范修复

文章目录 VueCli 自定义创建项目ESlint代码规范及手动修复代码规范错误 VueCli 自定义创建项目 安装脚手架 (已安装) npm i vue/cli -g创建项目 vue create xxx选项 Vue CLI v5.0.8 ? Please pick a preset:Default ([Vue 3] babel, eslint)Default ([Vue 2] babel, eslint) …

华为OD 叠积木(100分)【java】A卷+B卷

华为OD统一考试A卷+B卷 新题库说明 你收到的链接上面会标注A卷还是B卷。目前大部分收到的都是B卷。 B卷对应20022部分考题以及新出的题目,A卷对应的是新出的题目。 我将持续更新最新题目 获取更多免费题目可前往夸克网盘下载,请点击以下链接进入: 我用夸克网盘分享了「华为O…

Vue动态组件 <component :is=“XXX“></component>

动态组件&#xff1a;不同组件之间进行动态切换&#xff0c;通过 Vue 的 元素加一个特殊的 is attribute 实现 currentPage可以包括已注册组件的名字&#xff0c;或一个组件的选项对象 注意&#xff0c;这个 attribute 可以用于常规 HTML 元素&#xff0c;但这些元素将被视为…

无约束优化算法

第六章 无约束优化算法 本章考虑如下无约束优化问题 min ⁡ x ∈ R n f ( x ) (6.0.1) \min_{x{\in}R^n}f(x)\tag{6.0.1} x∈Rnmin​f(x)(6.0.1) 其中 f ( x ) f(x) f(x)是 R n → R R^n{\rightarrow}R Rn→R的函数&#xff0c;无约束优化问题是众多优化问题中最基本的问题&a…

大学英语试卷

大学英语试卷 If everyone learns to set forth facts and reason things out in social life, many of the contradictions are easy to ____. A. oblige B. engage C. resolve D. commitIf we let the fastest runner set the____, the others will fall behind. A. pace B.…

【Linux】源码编译安装openssl

版本&#xff1a;OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023) 系统&#xff1a;centos 7.6 步骤 下载安装包 wget https://www.openssl.org/source/openssl-3.0.11.tar.gz我是下载到 /home/openssl 下面 解压并编译 解压安装包 tar -zxvf openss…

网安周报|OpenSSF 推出恶意软件包存储库

1.OpenSSF 推出恶意软件包存储库 为了应对恶意开源软件包日益增长的威胁&#xff0c;开源安全基金会 ( OpenSSF ) 推出了一项名为“恶意软件包存储库”的新计划。该存储库可能会成为打击恶意代码的主要参与者&#xff0c;旨在增强开源软件生态系统的安全性和完整性。该存储库已…

深入理解JVM虚拟机第十二篇:JVM中的线程说明

文章目录 一:线程说明 1:线程概述 2:后台虚拟机主要线程 (一):虚拟机线程