七、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);
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]