当前位置: 首页 > 后端技术 > Node.js

实用程序库Lodash

时间:2023-04-04 00:56:38 Node.js

Lodash是一个JavaScript第三方实用程序库,可以提高开发者效率,提高原生JS方法的性能;Lodash的特点是一致性、模块化和高性能。业界众所周知,不需要引入其他第三方依赖,我们可以在使用过程中封装好的方法;(它的模块化特别适用于:创建满足函数的函数,遍历数组(arrays),对象(objects)和字符串(string等)。Lodash使用了一个简单的_符号,非常简洁。1、引入Lodash并使用Lodash.js,引入Lodash.js开发包有以下几种方式:js离线文件导入:直接从Lodash中文网下载相关的lodash.js包,放到自己的开发项目中,然后在使用的文件中引入:CDN导入:一般使用bootcdn直接在线导入,然后使用CDN加速文件下载访问:直接安装依赖注入,使用webpack或者glup打包方式直接在自己的项目中挂载lodash依赖包,如下:installdependencies$npmi\-gnpm$npmi\--savelodash根据需要挂载依赖包,例如//Loadthefullbuild.var\_\=require('lodash');//加载核心构建。var\_\=require('lodash/core');//为不可变的自动柯里化迭代优先数据最后方法加载FP构建。varfp\=require('lodash/fp');//加载方法类别。vararray\=require('lodash/array');varobject\=require('lodash/fp/object');//更小的browserify/rollup/webpackbundles.varat\=require('lodash/at');varcurryN\=require('lodash/fp/curryN');笔记注意:如果你想在Node.js<6的REPL环境下使用Lodash,请安装n_二、使用Lodash我们之所以选择Lodash,主要是因为Lodash让JavaScript变得更简单,大大提高了开发效率。下面的方法,引入相关loash依赖包后,可以直接调用相关方法运行,按照官方文档_.cloneDeep(深度克隆)众所周知:JS中很难深度克隆对象,例如:JSON.parse(JSON.stringify(obj))用于深度克隆。但是这个方案只有在对象内部没有方法的情况下才可行,否则是行不通的。varobj={a:{b:100,fun:function(){console.log("fun");}}}varobj2=_.cloneDeep(obj);obj.a.b=2000;console.log(obj2.a.b,obj.a.b);//1002000obj2.a.fun();_.compact(array)创建一个数组,并从原始数组中删除所有错误元素。例如,false、null、0、""、undefined和NaN被视为“假值”。vararr=[1,2,'',null,0,33,"aa"];vartemAr=_.compact(arr);//移除所有空值,null0falseconsole.log(temArr);//[1,2,33,'aa']_.concat(array,[values])创建一个新数组,将数组与任意数组或值连接起来,并返回连接后的新数组。var数组=[1,2,3];其他变量=_。concat(数组,2,[3],[[4,5,6]]);安慰。日志(其他);//[1,2,3,2,3,[4,5,6]]console.log(array);//[1,2,3]_.chunk(array,[size=1])按size分割array数组,将array(数组)分割成多个size长度的块,将这些块组成一个新的大批。如果不能将数组拆分成所有等长的块,那么最后剩下的元素将组成一个块。返回一个包含拆分块的新数组(注意:相当于一个二维数组)。varchunk1=_.chunk(['a','b','c','d'],2);控制台日志(块1);//[['a','b'],['c','d']]varchunk2=_.chunk(['a','b','c','d'],3);控制台日志(块2);//[['a','b','c'],['d']]_.includes(obj,ele,index)第一个参数是要查询的对象,第二个参数是要查询的元素被查询,第三个参数是开始查询的下标。varobj={'name':'张三','age':18},arr=["张三","李四","王舞","赵六"];console.log(_.includes(obj,'张三'));//trueconsole.log(_.includes(arr,'李四'));//trueconsole.log(_.includes(arr,'李四',2));//false_.times()比for更简洁易懂。_.times(5,function(a){console.log(a);//01234});_.map()是原生JS中数组方法的升级版,我们可以传一个字符串而不是浏览深度嵌套对象属性的回调函数vararr=[{"name":"John","phone":[{"name":"MI"},{"name":"iphone"}]},{"name":"李斯","phone":[{"name":"HUAWEI"},{"name":"honor"}]}];varjsMap=arr.map(function(owner){returnowner.phone[0].name;});varlodashMap=_.map(arr,'phone[0].name');控制台日志(lodashMap);//MIHUAWEI_.random()这个方法也比较强大灵活。我们可以只传入一个参数作为最大值,或者指定返回结果为浮点数。示例:functionrandomNum(min,max){returnMath.floor(Math.random()*(max-min))+min;}console.log(randomNum(12,18));console.log(_.random(12,18));先写这么多,还有很多方法自己看中文文档,很详细。如果你在测试或学习这些方法时遇到问题,可以在下方留言或私信我~支持:chrome43以上、Firefox38以上、IE6以上、MSEdge、Safari5以上、Node.js8及以上已通过测试。