lodash 工具库的使用
阅读数:155 评论数:0
跳转到新版页面分类
html/css/js
正文
一、概述
lodash是一个JavaScript语言的工具库,提供了很多实用工具函数。
//安装
npm install lodash
// 引入
import _ from "lodash";
二、常用方法
1、_.get(object,path,[defaultValue]
根据 object对象的path路径获取值。 如果解析 value 是 undefined 会以 defaultValue 取代。
object |
要检索的对象 |
path (Array|string) |
要获取属性的路径 |
defaultValue |
如果解析值是 undefined ,这值会被返回。 |
var object = { 'a': [{ 'b': { 'c': 3 } }] };
_.get(object, 'a[0].b.c'); // => 3
_.get(object, 'a.b.c', 'default'); // => 'default'
2、_.forIn(object,[iteratee=_.identity])
使用 iteratee
遍历对象的自身和继承的可枚举属性。 iteratee
会传入3个参数:(value, key, object)。 如果返回 false
,iteratee
会 提前退出遍历。
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forIn(new Foo, function(value, key) {
console.log(key);
});
// => Logs 'a', 'b', then 'c' (无法保证遍历的顺序)。
将数组(array)拆分成多个 size
长度的区块,并将这些区块组成一个新数组。 如果array
无法被分割成全部等长的区块,那么最后剩余的元 素将组成一个区块。
_.chunk(['a', 'b', 'c', 'd'], 2);// => [['a', 'b'], ['c', 'd']]
_.chunk(['a', 'b', 'c', 'd'], 3);// => [['a', 'b', 'c'], ['d']]
4、_.difference(array,[values])
array |
要检查的数组 |
values |
排除的值 |
返回一个过滤值后的新数组。
_.difference([3, 2, 1], [4, 2]);// => [3, 1]
返回一个包含所有传入数组交集元素的新数组。
_.intersection([2, 1], [4, 2], [1, 2]);// => [2]
返回一个新的联合数组。
_.union([2], [1, 2]);// => [2, 1]
返回新的去重后的数组。
_.uniq([2, 1, 2]);// => [2, 1]
8、_.forEach(collection,[iteratee=_.identity])
调用 iteratee
遍历 collection
(集合) 中的每个元素, iteratee 调用3个参数: (value, index|key, collection)。 如果迭代函数(iteratee)显式 的返回 false
,迭代会提前退出。
_([1, 2]).forEach(function(value) {
console.log(value);
});
// => Logs `1` then `2`.
_.forEach({ 'a': 1, 'b': 2 }, function(value, key) {
console.log(key);
});
// => Logs 'a' then 'b' (iteration order is not guaranteed).
9、_.orderBy(collection,[iteratees=_.identity],[orders])
如果没指定 orders
(排序),所有值以升序排序。 否则,指 定为"desc" 降序,或者指定为 “asc” 升序,排序对应值。
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]]
返回集合的长度。
_.size([1, 2, 3]);// => 3
_.size({ 'a': 1, 'b': 2 });// => 2
_.size('pebbles');// => 7
计算 array
中的最大值。 如果 array
是 空的或者假值将会返回 undefined
。
_.max([4, 2, 8, 6]);
// => 8
_.max([]);
// => undefined
var objects = [{ 'n': 1 }, { 'n': 2 }];
_.maxBy(objects, function(o) { return o.n; });
// => { 'n': 2 }
// The `_.property` iteratee shorthand.
_.maxBy(objects, 'n');
// => { 'n': 2 }
12、_.round(number,[precision=0])
根据 precision
(精度) 四舍五入 number
。
_.round(4.006);
// => 4
_.round(4.006, 2);
// => 4.01
_.round(4060, -2);
// => 4100
如果 两个值完全相同,那么返回 true
,否则返回 false
。
var object = { 'a': 1 };
var other = { 'a': 1 };
_.isEqual(object, other);
// => true
object === other;
// => false
深拷贝
var objects = [{ 'a': 1 }, { 'b': 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);// => false
_.isEmpty(null);
// => true
_.isEmpty(true);
// => true
_.isEmpty(1);
// => true
_.isEmpty([1, 2, 3]);
// => false
_.isEmpty({ 'a': 1 });
// => false
16、_.range([start=0],end,[step=1])
返回范围内数字组成的新数组。
_.range(4);
// => [0, 1, 2, 3]
_.range(-4);
// => [0, -1, -2, -3]
_.range(1, 5);
// => [1, 2, 3, 4]
_.range(0, 20, 5);
// => [0, 5, 10, 15]
_.range(0, -4, -1);
// => [0, -1, -2, -3]
_.range(1, 4, 0);
// => [1, 1, 1]
_.range(0);
// => []
17、_.truncate([string=''],[options=])
截断string
字符串,如果字符串超出了限定的最大值。 被截断的字符串后面会以 omission 代替,omission 默认是 “…”
options.length=30 |
允许的最大长度 |
options.omission='...' |
超出后的代替字符 |
options.separator |
截断点 |
_.truncate('hi-diddly-ho there, neighborino');
// => 'hi-diddly-ho there, neighbo...'
_.truncate('hi-diddly-ho there, neighborino', {
'length': 24,
'separator': ' '
});
// => 'hi-diddly-ho there,...'
_.truncate('hi-diddly-ho there, neighborino', {
'length': 24,
'separator': /,? +/
});
// => 'hi-diddly-ho there...'
_.truncate('hi-diddly-ho there, neighborino', {
'omission': ' [...]'
});
// => 'hi-diddly-ho there, neig [...]'