当前位置: 首页 > news >正文

JavaScript库之Lodash常用方法

Lodash 中文文档https://www.lodashjs.com/docs/lodash.omit/


以下总结了在项目中常用的方法,其他的慢慢更新

语言:

cloneDeep

这个方法类似_.clone,除了它会递归拷贝 value。(注:也叫深拷贝)

参数

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

返回

(*): 返回拷贝后的值。

例子

var objects = [{ 'a': 1 }, { 'b': 2 }]; var deep = _.cloneDeep(objects);console.log(deep[0] === objects[0]);

isArray

检查 value 是否是 Array 类对象。就是Array.isArray()

添加版本

0.1.0

参数

  1. value (*): 要检查的值。

返回

(boolean): 如果value是一个数组返回 true,否则返回 false。

例子

_.isArray([1, 2, 3]);
// => true_.isArray(document.body.children);
// => false 
_.isArray('abc');
// => false 
_.isArray(_.noop);
// => false

_.isObject(value)

检查 value 是否为 Object 的language type。 (例如: arrays, functions, objects, regexes,new Number(0), 以及 new String(''))

添加版本

0.1.0

参数

  1. value (*): 要检查的值。

返回

(boolean): 如果 value 为一个对象,那么返回 true,否则返回 false。

例子

_.isObject({});
// => true_.isObject([1, 2, 3]);
// => true_.isObject(_.noop);
// => true_.isObject(null);
// => false
function isObject(value) {var type = typeof value;return value != null && (type == 'object' || type == 'function');
}

_.isPlainObject(value)

检查 value 是否是普通对象。 也就是说该对象由 Object 构造函数创建,或者 [[Prototype]] 为 null 。

添加版本

0.8.0

参数

  1. value (*): 要检查的值。

返回

(boolean): 如果 value 为一个普通对象,那么返回 true,否则返回 false。

例子

function Foo() {  
this.a = 1;
} 
_.isPlainObject(new Foo);
// => false 
_.isPlainObject([1, 2, 3]);
// => false 
_.isPlainObject({ 'x': 0, 'y': 0 });
// => true_.isPlainObject(Object.create(null));
// => true

源码:

function isPlainObject(value) {if (!isObjectLike(value) || baseGetTag(value) != '[object Object]') {return false;}var proto = getPrototype(value);if (proto === null) {return true;}var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;return typeof Ctor == 'function' && Ctor instanceof Ctor &&funcToString.call(Ctor) == objectCtorString;
}

_.isElement(value)

检查 value 是否是可能是 DOM 元素。

isObjectLike

添加版本

0.1.0

参数

  1. value (*): 要检查的值。

返回

(boolean): 如果 value 是一个DOM元素,那么返回 true,否则返回 false。

例子

_.isElement(document.body);// => true _.isElement('<body>');// => false

isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);

满足类对象nodeType=1并且不是一个普通对象

isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);

_.isEmpty(value)

检查 value 是否为一个空对象,集合,映射或者set。 判断的依据是除非是有枚举属性的对象,length 大于 0 的 arguments object, array, string 或类jquery选择器。

对象如果被认为为空,那么他们没有自己的可枚举属性的对象。

类数组值,比如arguments对象,array,buffer,string或者类jQuery集合的length 为 0,被认为是空。类似的,map(映射)和set 的size 为 0,被认为是空。

添加版本

0.1.0

参数

  1. value (*): 要检查的值。

返回

(boolean): 如果 value 为空,那么返回 true,否则返回 false。

例子

_.isEmpty(null);
// => true 
_.isEmpty(true);
// => true 
_.isEmpty(1);
// => true 
_.isEmpty([1, 2, 3]);
// => false_.isEmpty({ 'a': 1 });
// => false
_.isEmpty(0);
// => true

使用场景:判断对象是否为空

源码:

var hasOwnProperty = objectProto.hasOwnProperty;
function isEmpty(value) {if (value == null) {return true;}if (isArrayLike(value) &&(isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||isBuffer(value) || isTypedArray(value) || isArguments(value))) {return !value.length;}var tag = getTag(value);if (tag == mapTag || tag == setTag) {return !value.size;}if (isPrototype(value)) {return !baseKeys(value).length;}for (var key in value) {if (hasOwnProperty.call(value, key)) {return false;}}return true;
}

_.isEqual(value, other)

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

**注意: **这个方法支持比较 arrays, array buffers, booleans, date objects, error objects, maps, numbers, Object objects, regexes, sets, strings, symbols, 以及 typed arrays. Object 对象值比较自身的属性,不包括继承的和可枚举的属性。 支持函数和DOM节点比较。

添加版本

0.1.0

参数

  1. value (*): 用来比较的值。

  1. other (*): 另一个用来比较的值。

返回

(boolean): 如果 两个值完全相同,那么返回 true,否则返回 false。

例子

var object = { 'a': 1 };
var other = { 'a': 1 };_.isEqual(object, other);
// => true object === other;
// => false

_.isFunction(value)

检查 value 是否是 Function 对象。

添加版本

0.1.0

参数

  1. value (*): 要检查的值

返回

(boolean): 如果 value 是一个函数,那么返回 true,否则返回 false。

例子

_.isFunction(_);
// => true 
_.isFunction(/abc/);
// => false

对象

_.omit(object, [props]) 删除对象上的指定属性,返回一个新的对象

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

import { omit } from 'lodash';
var object = { 'a': 1, 'b': '2', 'c': 3 };
const result = omit(object, ['a', 'c']);
console.log(result,object)

打印

=> { 'b': '2' } { 'a': 1, 'b': '2', 'c': 3 }

使用场景:需要移除复杂对象的属性,返回一个新的对象,对原有对象不产生任何影响

_.pick(object, [props])

创建一个从 object 中选中的属性的对象

参数

  1. object (Object): 来源对象。

  1. [props] (...(string|string[])): 要被忽略的属性。(注:单独指定或指定在数组中。)

返回

(Object): 返回新对象。

var object = { 'a': 1, 'b': '2', 'c': 3 };_.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }

使用场景: 在页面传参较多的时候使用,代码会看起来很简洁

例如:

// 使用前
const saveparams={param1:baseInfo?.param1,...param10:baseInfo?.param10 }
await saveApi(saveparams);
// 使用后
saveApi(pick(baseInfo,['param1',...'param10']))

提醒:若param9在baseInfo中没有这个属性,pick生成的对象也不会有这个属性

数组

_.compact(array)

创建一个新数组,包含原数组中所有的非假值元素。例如false, null,0, "", undefined, 和 NaN 都是被认为是“假值”。

引入版本

0.1.0

参数

  1. array (Array): 待处理的数组

返回值

(Array): 返回过滤掉假值的新数组。

例子

_.compact([0, 1, false, 2, '', 3]);
// => [1, 2, 3]

相关文章:

JavaScript库之Lodash常用方法

Lodash 中文文档https://www.lodashjs.com/docs/lodash.omit/以下总结了在项目中常用的方法&#xff0c;其他的慢慢更新语言&#xff1a;cloneDeep这个方法类似_.clone&#xff0c;除了它会递归拷贝 value。&#xff08;注&#xff1a;也叫深拷贝&#xff09;参数value (*): 要…...

Kotlin新手教程二(Kotlin基本数据类型及基础语法)

一、基本数据类型 1.数字 由于Kotlin支持类型推断&#xff0c;所以在使用时若超出Int的范围则会被认定为其它类型&#xff1b;若需要显式指定Long型值&#xff0c;则需要在值后添加L后缀。 2.浮点数 3.比较两个数&#xff08; 和 &#xff09; Kotlin 中没有基础数据类型&a…...

git idea创建新分支,获取/合并主支代码的2个方法

其他sql格式也在更新中&#xff0c;可直接查看这个系列&#xff0c;要是没有你需要的格式&#xff0c;可在评论或私信我 个人目录 获取主支代码的2个方法1&#xff0c;创建一个分支&#xff0c;获取主支的所有代码&#xff08;场景&#xff1a;我需要一个自己的分支进行编写模…...

CF1714A Everyone Loves to Sleep 题解

CF1714A Everyone Loves to Sleep 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例解释题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1代码实现题目 链接 https://www.luogu.com.cn/problem/CF1714A 字面描述 题面翻译 题目描述 Vlad和其他人一样&am…...

oracle官方下载历史版本JDK版本

背景 日常工作中由于一些特殊原因&#xff0c;我们需要下载指定系统指定位数指定版本的jdk&#xff0c;这个时候去网上搜索下载就会遇到各种坑&#xff0c;病毒、诱导连接、诱导关注/注册、付费、错误版本等&#xff0c;所以最好的办法是去官网下载&#xff0c;下面列举两种方式…...

双击-jar包无法运行解决方法

我自己是通过探索出来的方法解决的&#xff0c;网上的方法适合普通问题 网络流传方法 那种-jar和run.bat的就是曲解了问题意思&#xff0c;问题不是如何运行&#xff0c;而是如何双击jar包就可以直接运行。 普通小问题就是修改注册表&#xff0c;将java路径写进去后面加个 %1…...

程序员的自我修养第七章——动态链接 (下)

接上一篇。 7.3 地址无关代码 对于现代机器来说&#xff0c;引入地址无关代码并不麻烦&#xff0c;我们展示下各种模型的地址引用方式&#xff1a; 1. 模块内部函数调用 2. 模块内部的数据访问&#xff0c;如全局变量、静态变量。 3. 模块外部的函数调用&#xff0c;跳转。 4.…...

蓝桥杯刷题——基础篇(二)

这部分题目&#xff0c;主要面向有志参加ACM与蓝桥杯竞赛的同学而准备的&#xff0c;蓝桥杯与ACM考察内容甚至评测标准基本都一样&#xff0c;因此本训练计划提供完整的刷题顺序&#xff0c;循序渐进&#xff0c;提高代码量&#xff0c;巩固基础。因竞赛支持C语言、C、Java甚至…...

PTA L1-049 天梯赛座位分配(详解)

前言&#xff1a;内容包括&#xff1a;题目&#xff0c;代码实现&#xff0c;大致思路&#xff0c;代码解读 题目&#xff1a; 天梯赛每年有大量参赛队员&#xff0c;要保证同一所学校的所有队员都不能相邻&#xff0c;分配座位就成为一件比较麻烦的事情。为此我们制定如下策…...

Linux部分参数作用讲解

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的绽放&#xff0…...

Java kafka

JAVA面试题--Kafka&#xff08;最新最全&#xff09; 目录概述需求&#xff1a;设计思路实现思路分析1.URL管理2.网页下载器3.爬虫调度器4.网页解析器5.数据处理器拓展实现性能参数测试&#xff1a;参考资料和推荐阅读)Survive by day and develop by night. talk for import b…...

DBA之路---Stream数据共享同步机制与配置方法

oracle的Stream解析–数据共享 在g版本常用&#xff0c;如果是c版本项目一般都会选择goldengate&#xff0c;比stream靠谱多了 Oracle中的stream是消息队列一种应用形式&#xff0c;原理如下&#xff1a; 收集oracle中的事件&#xff0c;将事件保存在队列里&#xff0c;然后将…...

CF1790E Vlad and a Pair of Numbers 题解

CF1790E Vlad and a Pair of Numbers 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1思路代码实现题目 链接 https://www.luogu.com.cn/problem/CF1790E 字面描述 题面翻译 共有 ttt 组数据。 每组数据你会得到一个正整数 xxx&…...

漏洞预警|Apache Kafka Connect JNDI注入漏洞

棱镜七彩安全预警 近日网上有关于开源项目Apache Kafka Connect JNDI注入漏洞&#xff0c;棱镜七彩威胁情报团队第一时间探测到&#xff0c;经分析研判&#xff0c;向全社会发起开源漏洞预警公告&#xff0c;提醒相关安全团队及时响应。 项目介绍 Karaf是Apache旗下的一个开…...

企业小程序开发步骤【教你创建小程序】

随着移动互联网的兴起&#xff0c;微信已经成为了很多企业和商家必备的平台&#xff0c;而其中&#xff0c;微信小程序是一个非常重要的工具。本文将为大家介绍小程序开发步骤&#xff0c;教你创建小程序。 步骤一、注册小程序账号 先准备一个小程序账号&#xff0c;在微信公…...

刚性电路板的特点及与柔性电路板的区别

打开市场上的任何一个电子产品&#xff0c;会发现里面都有一块或多块电路板。电路板是电子产品运行的核心&#xff0c;之前沐渥小编已经给大家介绍了柔性电路板&#xff0c;下面给大家介绍刚性电路板的基础知识。 刚性电路板俗称硬板&#xff0c;是由不容易变形的刚性基材制成的…...

扫码过磅+车牌识别,内蒙古蒙维过磅实现信息化管理

扫码过磅、车牌识别、对接SAP ERP系统设计思路&#xff1a; 无人值守系统升级改造包括车牌自动识别系统、信息化&#xff08;扫码等方式&#xff09;管理系统、智能自动控制系统等实现信息无纸化传递。远程监管地点设于公司东磅房&#xff0c;可以实现远程监测监控画面、称重过…...

蒙特卡洛计算圆周率

使用MC计算圆周率的小例子&#xff0c;使用python的numpy&#xff0c;matplotlib库import numpy as npimport matplotlib.pyplot as pltdef mc_calculate_pi(t):np.random.seed(t)rand_num np.random.rand(t)rand_num2 np.random.rand(t)l1 rand_num-0.5l2 rand_num2-0.5l0…...

生物信息场景下的用户需求

背景分析概念定义基因测序是一种新型基因检测技术&#xff0c;是基因检测的方法之一&#xff0c;其又叫基因谱测序&#xff0c;是国际上公认的一种基因检测标准。基因测序技术能锁定病变基因&#xff0c;提前预防和治疗。过长的测序周期以及上万美元的仪器成本&#xff0c;成了…...

linux su(switch user)和sudo(superuser do)的区别?(sudo su与su的区别)

文章目录linux su&#xff08;switch user&#xff09;和sudo&#xff08;superuser do&#xff09;的区别&#xff1f;sudo su与su的区别linux su&#xff08;switch user&#xff09;和sudo&#xff08;superuser do&#xff09;的区别&#xff1f; 在Unix或Linux操作系统中…...

PostgreSQL的学习心得和知识总结(一百二十三)|深入理解PostgreSQL数据库开源扩展pg_dirtyread的使用场景和实现原理

目录结构 注&#xff1a;提前言明 本文借鉴了以下博主、书籍或网站的内容&#xff0c;其列表如下&#xff1a; 1、参考书籍&#xff1a;《PostgreSQL数据库内核分析》 2、参考书籍&#xff1a;《数据库事务处理的艺术&#xff1a;事务管理与并发控制》 3、PostgreSQL数据库仓库…...

ubuntu清理挖矿病毒

0 序言 我之前搭建的hadoop用于测试&#xff0c;直接使用了8088和9870端口&#xff0c;没有放入docker&#xff0c;从而没有端口映射。于是&#xff0c;就被不法之徒盯上了&#xff0c;hadoop被提交了很多job&#xff0c;使得系统被感染了挖矿病毒&#xff0c;在前几天阿里云站…...

【代码随想录训练营】【Day16】第六章|二叉树|104.二叉树的最大深度|559.n叉树的最大深度|111.二叉树的最小深度|222.完全二叉树的节点个数

二叉树的最大深度 题目详细&#xff1a;LeetCode.104 递归法很容易理解&#xff1a; 定义一个全局变量max&#xff0c; 记录二叉树的最大深度在递归函数中增加一个深度参数&#xff0c;表示当前的节点的深度然后对二叉树进行深度优先遍历当遍历到叶子节点时&#xff0c;比较…...

transformer总结

1.注意力机制 意义&#xff1a;人类的注意力机制极大提高了信息处理的效率和准确性。 公式&#xff1a; 1)自注意力机制 b都是在考虑了所有a的情况下生成的。 以产生b1向量为例&#xff1a; 1.在a这个序列中&#xff0c;找到与a1相关的其他向量 2.每个向量与a1关联的程度&a…...

dart flutter入门教程,开发手册 分享

我最近在学校dart flutter.这是我收集的一些手册和教程. 不需要关注公众号,不需要加好友. 我发现flutter(dart)的中文资料比较奇缺.入门的教程非常多.但是api手册几乎没有(全是英文的). 收集原则 1.中文(我英文不好) 2.不要pdf的,网上有一些pdf的 从入门到进阶的,但是太长…...

教育舆情监测关键词有哪些,TOOM教育舆情监测系统流程?

教育舆情监测是指对教育领域的舆情进行收集、分析和处理的过程。舆情是指公众在各种渠道上对教育政策、教育机构、教育事件等方面的言论、态度和情绪。通过对教育舆情的监测和分析&#xff0c;可以了解公众对教育行业的看法和反应&#xff0c;提高对教育行业的管控能力&#xf…...

MySQL高级(一)

MySQL-day01 1 MySQL简介 1.1 MySQL简介 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB&#xff08;创始人Michael Widenius&#xff09;公司开发&#xff0c;2008被Sun收购&#xff08;10亿美金&#xff09;&#xff0c;2009年Sun被Oracle收购。MariaDBMaria…...

如何将Python项目部署到新电脑上运行?

如何将Python项目部署到新电脑上运行&#xff1f; 在工作中&#xff0c;可能需要在新服务器上部署项目代码&#xff0c;例如新增服务器、把测试环境的代码部署到生产环境等。 在生活中&#xff0c;也会遇到换新电脑&#xff0c;需要将自己在旧电脑上写的&#xff08;项目&…...

JVM和JAVA体系结构

1、为什么要学习JVM作为Java工程师的你曾被伤害过吗&#xff1f;你是否也遇到过这些问题&#xff1f;运行着的线上系统突然卡死&#xff0c;系统无法访问&#xff0c;甚至直接OOM想解决线上JVM GC问题&#xff0c;但却无从下手新项目上线&#xff0c;对各种JVM参数设置一脸茫然…...

(十)、通过云对象修改阅读量+点赞功能的实现【uniapp+uinicloud多用户社区博客实战项目(完整开发文档-从零到完整项目)】

1&#xff0c;通过云对象importObj修改阅读量 1.1 新建云对象 1.2 云对象中写自增自减方法 封装云对象utilsObj中的自增自减方法&#xff0c;方法名取为operation&#xff0c;传递4个参数。 // 云对象教程: https://uniapp.dcloud.net.cn/uniCloud/cloud-obj // jsdoc语法提…...

两个wordpress用户/2023免费b站推广大全

文章目录0 效果1 题目2 思路3 代码0 效果 1 题目 2 思路 排序后&#xff0c;以此判断两个相邻元素是否相等。 3 代码 int cmp(const void* p1, const void* p2){return *(int*)p1 - *(int*)p2; }bool containsDuplicate(int* nums, int numsSize){qsort(nums, numsSize, s…...

如何用服务器代替空间做网站/百度手机app

该文章转载自 http://fann.im/blog/2012/04/12/difference-between-objectforkey-and-valueforkey-in-nsdictionary/ 感谢原作者 从 NSDictionary 取值的时候有两个方法&#xff0c;objectForKey: 和 valueForKey:&#xff0c;这两个方法具体有什么不同呢&#xff1f; 先从 NS…...

做网站所需要的代码6/流量平台有哪些

前面在“数字调制系列&#xff1a;IQ 基本理论”一文中介绍了 IQ 的概念、常用数字调制方式及映射星座图等内容&#xff0c;当完成数字比特流到 IQ 坐标系的映射后&#xff0c;便可以得到数字 I 和 Q 信号&#xff0c;然后分别经过 DAC 变换为模拟 I 和 Q 信号&#xff0c;最后…...

网站访问量什么意思/最近新闻事件

请问唐氏筛查低风险人群&#xff0c;有必要做无创DNA吗&#xff1f;唐氏筛查低风险&#xff0c;有必要做无创DNA检查吗&#xff1f;这个问题问的好&#xff0c;如果单纯性的唐氏筛查低风险&#xff0c;那么根本没有必要再做无创DNA检查了。现实生活中还是存在很多唐氏筛查低风险…...

他达拉非副作用/泉州百度关键词优化

前言 锁是一种用来控制多线程访问共享资源的工具。通常&#xff0c;锁可以独占共享资源&#xff1a;同一时间只有一个线程可以获得锁&#xff0c;并且所有访问共享资源的线程都必须首先获得锁。前面我们介绍过了synchronized&#xff0c;使用synchronized的方法和代码块作用域…...

做兼职网站赚钱吗/百度一下百度搜索官网

从接触thinkphp到今天&#xff0c;填完此坑&#xff0c;必有其他的坑有会冒出来。哎&#xff01;这个填坑之路我想是没有尽头的了。 最近&#xff0c;需要使用ajax完成一些操作&#xff0c;一开始想Ajax简单啊&#xff0c;不过是一种提交数据的方式&#xff0c;不过是害苦了我。…...