JS - Lodash工具库的使用详解7(Array数组函数4:数组排序、打乱)

作者: hgweb 发布时间: 2019-10-14 浏览: 2945 次 编辑

七、Array 数组操作函数4:数组排序

1,基本排序

(1)sortBy 方法创建一个元素数组。 以 iteratee 处理的结果升序排序。 这个方法执行稳定排序,也就是说相同元素会保持原始排序。

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]]

(2)orderBy 方法类似于 sortBy,除了它允许指定 iteratee(迭代函数)结果如何排序。 指定为"desc" 降序,或者指定为 "asc" 升序,如果没指定 orders(排序),所有值以升序排序。

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

原文:JS - Lodash工具库的使用详解7(Array数组函数4:数组排序、打乱)

2,去重排序

(1)sortedUniq 类似与去重方法 uniq,返回一个新的不重复的数组,并且它会优化排序数组。

_.sortedUniq([1, 1, 2]);   // => [1, 2]

(2)sortedUniqBy 方法类似于 sortedUniq,不过它接受一个 iteratee (迭代函数),调用每一个数组(array)的每个元素以产生唯一性计算的标准。它同样会优化排序数组。

_.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);   // => [1.1, 2.3]

3,打乱数组

shuffle 方法可以创建一个被打乱值的数组。

_.shuffle([1, 2, 3, 4]);   // => [4, 1, 3, 2] 

JS Lodash工具库的使用详解系列:

JS - Lodash工具库的使用详解1(使用debounce函数实现防抖)

JS - Lodash工具库的使用详解2(使用throttle函数实现节流)

JS - Lodash工具库的使用详解3(String字符串操作函数)

JS - Lodash工具库的使用详解4(Array数组函数1:查找指定元素、或索引)

JS - Lodash工具库的使用详解5(Array数组函数2:获取部分数组片段)

JS - Lodash工具库的使用详解6(Array数组函数3:移除、修改原数组内容)

JS - Lodash工具库的使用详解7(Array数组函数4:数组排序、打乱)

JS - Lodash工具库的使用详解8(Array数组函数5:数组与对象间的转换)

JS - Lodash工具库的使用详解9(Array数组函数6:如果不是数组强制转成数组)

JS - Lodash工具库的使用详解10(Array数组函数7:根据指定规则进行分组、统计)

JS - Lodash工具库的使用详解11(Array数组函数8:创建指定范围数字的数组)

JS - Lodash工具库的使用详解12(创建一个只能调用1次、n次的函数)

JS - Lodash工具库的使用详解13(创建一个对某函数结果取反的函数)

JS - Lodash工具库的使用详解14(浅拷贝,深拷贝)

JS - Lodash工具库的使用详解15(深比较,判断是否包含某属性或属性值)

JS - Lodash工具库的使用详解16(判断是否为空)

JS - Lodash工具库的使用详解17(类型检查)

JS - Lodash工具库的使用详解18(生成随机数)

原文出自:www.hangge.com 转载请保留原文链接:https://www.hangge.com/blog/cache/detail_2570.html