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

loadsh简介

时间:2023-04-03 17:19:10 Node.js

loadsh简介Lodash是一个一致的、模块化的、高性能的JavaScript实用程序库。Lodash使JavaScript更容易处理数组、数字、对象、字符串等。Lodash的模块化方法非常适合:遍历数组、对象和字符串进行操作并检测值创建满足函数的函数1、lodash参考npmi-gnpmnpmi--savelodashimport_from'lodash'2、lodash常用方法数组Array_.difference(array,[values])创建一个具有唯一数组值的数组,每个值不包含在其他给定数组中。(愚人码头注:也就是新建一个数组,这个数组中的值不包括第一个数(数组参数)给定数组中的值。)该方法使用SameValueZero进行相等比较。结果值的顺序由第一个数组中的顺序决定。如:_.difference([2,1,1994],[4,2]);//=>[1,1994]_.remove(array,[predicate=_.identity])移除数组中的谓词(断言)返回所有为真的元素,并返回移除元素的数组。predicate(assertion)会传入3个参数:(value,index,array)。如:vararray=[1,2,3,4];varevens=_.remove(array,function(n){returnn%2==0;});控制台日志(数组);//=>[1,3]console.log(evens);//=>[2,4]_.uniq(array)创建数组的去重副本。SameValueZero用于相等比较。只会保留元素的第一次出现。如:_.uniq([2??,1,2]);//=>[2,1]_.last(array)获取数组中的最后一个元素。如:_.last([1,2,3]);//=>3个集合Collection_.forEach(collection,[iteratee=_.identity])调用iteratee遍历集合(collection)中的每个元素,iteratee调用3个参数:(value,index|key,collection)。如果迭代函数(iteratee)显式返回false,则迭代将提前退出。例如:_([1,2]).forEach(function(value){console.log(value);});//=>记录`1`然后`2`。_.forEach({'a':1,'b':2},function(value,key){console.log(key);});//=>Logs'a'then'b'(不保证迭代顺序)._.filter(collection,[predicate=_.identity])遍历集合(collection)元素,returnpredicate(断言函数)返回一个数组所有元素的真值。使用三个参数调用谓词(断言函数):(值、索引|键、集合)。如:varusers=[{'user':'barney','age':36,'active':true},{'user':'fred','age':40,'active':false}];_.filter(users,function(o){return!o.active;});//=>['fred']的对象//`_.matches`迭代速记。_.filter(users,{'age':36,'active':true});//=>['barney']的对象//`_.matchesProperty`迭代速记。_.filter(users,['active',false]);//=>['fred']的对象//`_.property`迭代速记。_.filter(用户,“活跃”);//=>objectsfor['barney']_.groupBy(collection,[iteratee=_.identity])创建一个对象,key是iteratee遍历集合中每个元素返回的结果。分组值的顺序由它们在集合中出现的顺序决定。每个key对应的value负责生成key的元素数组。iteratee调用采用1个参数:(值)。如:varusers=[{'user':'barney','age':36,'active':true},{'user':'fred','age':40,'active':false}];_.groupBy(用户,'用户');//=>{"barney":[{"user":"barney","age":36,"active":true}],"fred":[{"user":"fred","age":40,"active":false}]}_.includes(collection,value,[fromIndex=0])检查value(value)是否在collection(collection)中。如果集合(collection)是一个字符串,则检查字符串中是否有value(value,substring),否则使用SameValueZero进行相等比较。如果指定的fromIndex为负数,则搜索从集合的末尾开始。如:_.includes([1,2,3],1);//=>真_.includes([1,2,3],1,2);//=>false_.includes({'user':'fred','age':40},'fred');//=>true_.includes('pebbles','eb');//=>true_.orderBy(collection,[iteratees=[_.identity]],[orders])此方法类似于_.sortBy,不同之处在于它允许指定iteratee(迭代函数)结果的排序方式。如果未指定orders,则所有值按升序排序。否则,指定“desc”为降序,或“asc”为升序,对相应的值进行排序。例如:varusers=[{'user':'fred','age':48},{'user':'barney','age':34},{'user':'fred','age':40},{'用户':'巴尼','年龄':36}];//对`user`进行升序排序,对`age`进行降序排序。_.orderBy(用户,['用户','年龄'],['asc','desc']);//=>[['barney',36],['barney',34],['fred',48],['fred',40]]_.sortBy(collection,[iteratees=[_.identity]])创建一个元素数组。按升序对iteratee的结果进行排序。此方法执行稳定排序,这意味着相同的元素将保持原始顺序。iteratees调用采用1个参数:(值)。例如:varusers=[{'user':'fred','age':48},{'user':'barney','age':36},{'user':'fred','age':40},{'用户':'巴尼','年龄':34}];_.sortBy(users,function(o){returno.user;});//=>[['barney',36],['barney',34],['fred',48],['fred',40]]_.sortBy(users,['user','年龄']);//=>[['barney',34],['barney',36],['fred',40],['fred',48]]_.sortBy(users,'user',function(o){returnMath.floor(o.age/10);});//=>[['barney',36],['barney',34],['fred',48],['fred',40]]的对象_.debounce(func,[wait=0],[options={}])创建一个去抖动(抗震)函数,该函数将在距离上次调用延迟wait毫秒后调用func方法。debounced函数提供了一个cancel方法来取消延迟的函数调用和一个flush方法来立即调用它。可以提供一个选项(option)对象来决定如何调用func方法,options.leading和|或者options.trailing决定延迟前后如何触发(愚人码头注:是先调用再等待还是先等待再调用)。使用提供给去抖函数的最后一个参数调用func。对debounced函数的后续调用将返回最后一次func调用的结果。注意:如果leading和trailing选项都为true,func允许尾随调用的条件是:debounce方法在等待期间被多次调用。如果wait为0且leading为false,则func调用将推迟到下一个点,类似于setTimeout为0的超时。例如://在窗口更改时避免昂贵的计算开销。jQuery(window).on('resize',_.debounce(calculateLayout,150));//`sendMail`在点击时被调用。jQuery(element).on('click',_.debounce(sendMail,300,{'leading':true,'trailing':false}));//确保`batchLog`将在1秒内被触发。vardebounced=_.debounce(batchLog,250,{'maxWait':1000});varsource=newEventSource('/stream');jQuery(source).on('message',debounced);//取消一个Trailingdebounce调用jQuery(window).on('popstate',debounced.cancel);