非常好用的JavaScript 工具库--lodash

一、什么是lodash?

lodash库是一个具有一致接口、模块化、高性能等特性的 JavaScript 工具库。
lodash是一个javascript库,也是Node JS的常用模块,它内部封装了诸多对字符串、数组、对象等常见数据类型的处理函数,其中部分是目前 ECMAScript 尚未制定的规范,但同时被业界所认可的辅助函数。

二、lodash相关文档

API文档:

三、lodash模块组成

  • Array,适用于数组类型,比如填充数据、查找元素、数组分片等操作;
  • Collection,适用于数组和对象类型,部分适用于字符串,比如分组、查找、过滤等操作;
  • Function,适用于函数类型,比如节流、延迟、缓存、设置钩子等操作;
  • Lang,普遍适用于各种类型,常用于执行类型判断和类型转换;
  • Math,适用于数值类型,常用于执行数学运算;
  • Number,适用于生成随机数,比较数值与数值区间的关系;
  • Object,适用于对象类型,常用于对象的创建、扩展、类型转换、检索、集合等操作;
  • Seq,常用于创建链式调用,提高执行性能(惰性计算);
  • String,适用于字符串类型;

四、安装及使用

以_.groupBy()方法为例来讲:

(一)使用方法
  1. 安装命令:npm i --save lodash
  2. 使用方法:
import _ from 'lodash';
let names = require('./names');
names = _.groupBy(require('./names'), (name) => name[0].toUpperCase());
(二)参数详细介绍
 
QQ20171102-230315@2x.png
 
QQ20171102-230256@2x.png
 
QQ20171102-225204@2x.png

五、举个“栗”子

我们要实现分组的城市列表,类似于微信中的通信录列表,上张图:

 
QQ20171109-154325@2x.png

假设我们现在只有这样的数据:

 
WX20171103-134040@2x.png

那怎么实现呢?
用groupBy就可以实现分组啦~

...
import _ from 'lodash';
let cities = require('./beforeCity.json');

...
getCityInfo(){
        console.log('cities=',cities);
        let cityList = [];
        cityList = _.groupBy(cities, (city) => city.pinyin[0]);
        console.log('cityList=',cityList);
}
...

分组结果如下:

 


常用的方法

1.生成唯一id

_.uniqueId()

2.检查字符串string是否以 target 开头。  

let a  = 'abc666';
_.startsWith(a,'abc') // true  结束 ._endsWith(a,'666') true

3.截取字符串 做标题

_.truncate('这是一个简单的标题', {
  'length': 8
});  // 这是一个简...

4.获取array数组的第n个元素。如果n为负数,则返回从数组结尾开始的第n个元素。

var array = ['a', 'b', 'c', 'd'];
 
_.nth(array, 1);
// => 'b'
 
_.nth(array, -2);
// => 'c';

5.创建一个从 object 中选中的属性的对象。

var object = { 'a': 1, 'b': '2', 'c': 3 };
 
_.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }

6.修改对象中的数据  _.set(object, path, value)

let o  = {value:20};
_.set(o,'value',10);  //
console.log(o) // {value:10}

7.排序  orderBy 默认升序

var users = [
  { 'user': 'fred',   'age': 48 },
  { 'user': 'barney', 'age': 34 },
  { 'user': 'fred',   'age': 40 },
  { 'user': 'barney', 'age': 36 }
];
 
// 以 `user` 升序排序 再  `age` 以降序排序。
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]

 

posted @ 2019-11-08 12:49  一路向北√  阅读(2444)  评论(0编辑  收藏  举报

web应用开发&研究 -

业精于勤而荒于嬉。

工作,使我快乐。


Font Awesome | Respond.js | Bootstrap中文网