什么是程序猿的快乐星球,如果你想知道什么是快乐星球的话,今天我就带你研究!
今天无意间翻看到 npm 上 lodash 上的周下载量已经达到了 4000 多万!
于是就想看看这个库年下载量有多少,于是就有了下图。并且到了一个结论,lodash 可能是年度下载量最多的 js 库!
我们先看下图
你没看错!从 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培训服务经验,采用全程面授高品质、高体验培养模式,拥有国内一体化教学管理及学员服务,助力更多学员实现高薪梦想。
相关文章
关注千锋学习站小程序
随时随地免费学习课程
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱