千锋教育-做有情怀、有良心、有品质的IT职业教育机构

400-811-9990
当前位置:首页  >  技术文章  >  正文

使用 lodash 给 前端开发 助力 -可能是年度下载量最多的 js 库

时间:2022-07-28 15:20      来源:千锋教育 作者:qyf

  什么是程序猿的快乐星球,如果你想知道什么是快乐星球的话,今天我就带你研究!

  今天无意间翻看到 npm 上 lodash 上的周下载量已经达到了 4000 多万!

图片1

  于是就想看看这个库年下载量有多少,于是就有了下图。并且到了一个结论,lodash 可能是年度下载量最多的 js 库!

  我们先看下图

图片2

  你没看错!从 2020-01-01 到 2020-12-31,npm 上下载量已经到达了 16 亿!真是吓了一跳!数了好几次,确信是数字没认错,16 亿!

  有点不敢相信,再想想就相通了!js 现在不只用来做前端,还用来做后端,中台,桌面端,app 等等。程序猿们又经常自嘲为码农,天天工作就是搬砖!作为一名前端开发者,随便用一个框架或者第三方库(我们称之为搬砖)就有可能使用到 lodash 。

  有了像 lodash 这样的砖头我们工作变秃的速度就会慢很多!

  为什么使用?年下载量达 16 亿的库,我们必须得学习一下,减少一下头发掉落的速度!

  为什么使用 lodash 呢?首先来看官网上的说明!

  Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。

  1. 遍历 array、object 和 string

  2. 对值进行操作和检测

  3. 创建符合功能的函数

  引入

  1. 普通的浏览器环境下我们只需引入 js 文件即可

  普通的网页引入的话,引入以后就可以使用_这个变量,没错,就是下滑线!

  console.log(typeof _);//object

  1. npm 安装

  npm i --save lodash

  使用 npm 的话

  nodejs 下面

  let _ = require('lodash');

  vue 或者 react 项目中

  let _ = import('lodash')

  不管怎么引入,引入之后我们就得到了一个对象,内置很多 方法!

  使用

  接下来我们来看一些比较有用的方法

  1-按照条件删除数组元素

  具体使用

  var array = [1, 2, 3, 4];

  var evens = _.remove(array, function(n) {

  return n % 2 == 0;

  });

  console.log(array);

  // => [1, 3]

  console.log(evens);

  // => [2, 4]

  简单来说是按照一定条件删除数组中的元素,并且改变了数组本身!

  2-数组排序

  我们感觉这个方法最有用!

  如果我们有个数组需要排序!

  var 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, ['user', 'age']);

  // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]

  第三个用法,会先按照姓名排序,然后按照年龄除以10再向下取整的结果排序

  _.sortBy(users, 'user', function(o) {

  return Math.floor(o.age / 10);

  });

  // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]

  3-数组去重

  _.uniq([2, 1, 2]);

  // => [2, 1]

  一句话 去掉了重复元素

  _.uniqBy([2.1, 1.2, 2.3], Math.floor);

  

  *// => [2.1, 1.2]

  对数组中元素都向下取整,如果取整结果一样就删除

  _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');

  

  // => [{ 'x': 1 }, { 'x': 2 }]

  按照数组中x属性值去重,删除x值相当的对象

  4-求数组最大值

  _.min([4, 2, 8, 6]);

  // => 2

  这是求纯数值的数字的最小值

  下面是按照对象的n属性,求数组n属性,属性值最小的元素

  var objects = [{ 'n': 1 }, { 'n': 2 }];

  _.minBy(objects, function(o) { return o.n; });

  // => { 'n': 1 }

  // The `_.property` iteratee shorthand.

  _.minBy(objects, 'n');

  // => { 'n': 1 }

  _.max求最大值的用法类似!

  5-求数组所有元素的和

  _.sum([4, 2, 8, 6]);

  // => 20

  求和这个需要我们经常会用到,上面是求数值数组的和。

  下面是求数组中所有对象n属性的和。

  var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];

  _.sumBy(objects, function(o) { return o.n; });

  // => 20

  // The `_.property` iteratee shorthand.

  _.sumBy(objects, 'n');

  // => 20

  6-获取两个数字之间的随机数

  原生js中我们要使用Math.random(), 但是结果是0-1之间的数值,我们还需要做转换!

  而现在只需要这样

  _.random(0, 5);

  // => 0-5之间的整数

  _.random(1.2, 5.2);

  // => 1.2 -5.2 之间的小数

  7-浅拷贝和深拷贝

  var objects = [{ 'a': 1 }, { 'b': 2 }];

  var shallow = _.clone(objects);

  console.log(deep[0] === objects[0]);

  // => true

  clone是一个浅拷贝的方法

  cloneDeep是给深拷贝的方法

  var objects = [{ 'a': 1 }, { 'b': 2 }];

  var deep = _.cloneDeep(objects);

  console.log(deep[0] === objects[0]);

  // => false

  结语:我们今天就先看这几个功能。上面有些功能,如果我们使用js自己实现,会相当的麻烦,采用lodash的话,一句话就搞定了 !你说他香不香!当然lodash里面还有很多好用的方法,我们只是列举出一些,其他的大家可以参考官方文档。

  对于程序猿来说什么是快乐星球?我认为就是一个好用的框架或者是一个好用的js库!更多关于前端培训的问题,欢迎咨询千锋教育在线名师。千锋教育拥有多年IT培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。

相关文章

  • 北京总部地址:北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
    北京沙河校区:北京市昌平区沙阳路18号北京科技职业技术学院广场服务楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 深圳校区地址:深圳市宝安区宝安大道5010号西部硅谷B座A区6层A605/B座C区1层108
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 上海校区地址:上海市宝山区同济支路199号智慧七立方3号楼2-4层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 广州校区地址:广州市白云区永平街永泰学山塘学山文化创意谷A1栋六楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 郑州二七区校区地址:郑州市二七区航海中路60号海为科技园C区10层
    郑州高新区校区地址:郑州市高新区金梭路与银杏路交叉口教育科技产业园南门D座4层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 大连校区地址:辽宁省大连市高新园区爱贤街10号大连设计城A座901
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 武汉金融港校区地址:武汉市东新区光谷大道77号金融港B18栋三楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 成都校区地址:成都市高新区肖家河沿街138号肖家河大厦三楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 西安校区地址:西安市雁塔区高新六路52号立人科技C座西区4楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 杭州旺田校区:浙江省杭州市江干区九堡旺田书画城A座4层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 青岛校区地址:青岛市市北区龙城路31号卓越世纪中心4号楼5层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 重庆校区地址:重庆市九龙坡区科园一路3号渝高大厦9楼
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 长沙校区地址:湖南省长沙市岳麓区麓谷企业广场A2栋三单元306号
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 哈尔滨校区地址:哈尔滨市松北区世泽路689号 科技创新城4号楼1101
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 南京校区地址:南京市建邺区应天大街780号弘辉产业园1栋2层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 太原校区地址:太原市小店区长治路230号能源互联网大厦6层
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 沈阳校区地址:辽宁省沈阳市浑南区世纪路16号东大软件园B园B1座A201
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 合肥校区地址:合肥市包河区徽州大道396号东方广场B座12A
    咨询电话:400-811-9990
    面授课程:HTML5大前端培训、JavaEE+分布式开发培训、Python全栈+人工智能培训、全链路UI/UE设计培训、云计算培训、全栈软件测试培训、大数据+人工智能培训、智能物联网+嵌入式培训、Unity游戏开发培训、Go语言开发培训、PHP全栈+服务器集群培训、网络安全培训、互联网营销培训、好程序员
    认证课程:软考、、PMP认证、红帽RHCE认证
  • 千锋教育服务号

    关注千锋学习站小程序
    随时随地免费学习课程

  • 千锋教育移动站

    扫一扫快速进入
    千锋移动端页面

  • 千锋互联服务号

    扫码匿名提建议
    直达CEO信箱