Marine's Blog

Lodash使用简记

2018/01/15

扫描二维码分享

×

前言


Lodash,这是一个具有一致接口、模块化、高性能等特性的 JavaScript 工具库。

Lodash 中文文档

今日在使用lodash排序方法,遇到点使用上问题,网上搜索解决方法,一直没效果,后来,无意撇了一眼,发现方法用错了,所以有了此篇笔记,以后关于lodash的使用,也会记录到这里。

Lodash


_.sortBy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
_.sortBy(collection, [iteratees=[_.identity]])
创建一个元素数组。 以 iteratee 处理的结果升序排序。 这个方法执行稳定排序,也就是说相同元素会保持原始排序。 iteratees 调用1个参数: (value)。
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]]
_.sortBy(users, 'user', function(o) {
return Math.floor(o.age / 10);
});
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]

我想实现user降序,然后再是age降序,而_sortBy仅是升序排序,所以应使用_orderBy方法。

_.orderBy

1
2
3
4
5
6
7
8
9
10
11
12
13
_.orderBy(collection, [iteratees=[_.identity]], [orders])
此方法类似于_.sortBy,除了它允许指定 iteratee(迭代函数)结果如何排序。 如果没指定 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'], ['desc', 'desc']);
// => objects for [['fred', 48], ['fred', 40], ['barney', 36], ['barney', 34]]

stackoverflow找到解决方法后,太粗心,一直再用_.sortBy尝试一直没有效果,很纳闷,无意间才发现参数使用对了,方法却不是一个!!