Lodash 一个著名的javascript原生库

Ldash官网:https://lodash.com

简介:

Lodash是一个内部封装了诸多对字符串、数组、对象等常见的数据类型的处理函数的一套工具库,它使用延迟计算,使得其性能大大提升,延迟计算意味着在我们的链式方法在显示或者隐藏式的value()调用之前式不会执行的。由于这种执行的延后,因此lodash可以进行shortcut fusion这样的优化,通过合并链式iteratee大大降低迭代次数。从而大大提升性能

安装lodash:

npm install lodash

yarn add lodash

lodash提高JS原生方法性能:

例如:

//引入lodash
const _ = require('lodash')
//首先生成length=1000000的随机数数组arr
var arr = [];
for (var i = 0; i < 100000000; i++) {
  arr.push(Math.floor(Math.random() * 10000))
}

//使用lodash forEach 遍历方法
console.time();
_.forEach(arr, function (key) {});
console.timeEnd();	//60.931ms

//原生JavaScript forEach 遍历方法
console.time();
arr.forEach(function (key) {});
console.timeEnd();	//1142.288ms

取俩数组的差集

let A = [{id:1,name:"小明"},{id:2,name:"小红"},{id:3,name:"光头强"}]
let B = [{id:1,name:"小明"},{id:2,name:"小红"}]


function difference() {
  //_.filter 返回满足条件的数组
  return _.filter(A, (item) => {
  	//_.find查询 (B数组内对象有没有id)=(A中item的id) 没有返回null / 所以当没有时return true
	return _.find(B, { 'id': item.id }) == null
  })
}

difference()	//[{id:3,name:"光头强"}]

常用的lodash方法:

例如:

const _ = require('lodash')

_.range(10)  //1.生成元素为0到9的数组

_.uniqueId() //2.生成不同的id,用于元素中的id值再好不过

.mapKeys 	 //遍历重写key, 相当于.forIn
.mapValues  //遍历重写value , 相当于.forIn
_.invert  	//反转映射,快速通过value值找key

_.max(array)  //最大
_.min(array)  //最小
_.sum(array)  //求和
_.random(0, 10)	  //生成1~10的随机数
_.round(4.006, 2);	//四舍五入,保留两位小数 4.01

_.isNumber(3)	//true 返回(true / false)
_.isInterger()
_.isFunction()
_.isPlainObject()
_.isArray()
_.isDate()
_.isElement()
_.isEmpty({ 'a': 1 }) 	//false   检查是否为一个空对象
_.isEqual()				//支持对象和数组

 

_.cloneDeep 	 //深度复制
_.clone  		//浅复制
_.once   		//只执行一次
_.before 		 //最多n-1次
_.after 		 //n次后执行
_.debounce		 //忽略频繁执行
_.union 		//合并两数组,去重
_.uniq 			//去重

 

_.remove(array, function) //直接在array移除在function返回true的元素
_.sameple(array)		   //随机取1
_.samepleSize(array, int)  //  随机取n
_.shuffle(array) 			//乱序, jQuery.shuffle 
_.find(array, function | object) 	//根据function返回值和对象查找1个结果
_.filter(array, function | object) //根据function返回值和对象查找多个结果
_.groupBy(array, string) 			//分组,与多合一相反
_.keyBy(array, string) 			//分组,类似groupBy, 但只有唯一值
_.countBy(array, string) 		//分组统计
_.xor(array1,array2) 			//得到非交集,元素是Object用xorBy
_.intersection(array1,array2) 	//得到交集,元素是Object用intersectionBy  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值