// Underscore
_.sortBy(fruits, 'name');
// => [{name:"apple", amount: 4}, {name:"banana", amount: 2}, {name:"mango", amount: 1}, {name:"pineapple", amount: 2}]
// Lodash
_.orderBy(fruits, ['name'],['asc']);
// => [{name:"apple", amount: 4}, {name:"banana", amount: 2}, {name:"mango", amount: 1}, {name:"pineapple", amount: 2}]
// Native
const sortBy = (key) => {
return (a, b) => (a[key] > b[key]) ? 1 : ((b[key] > a[key]) ? -1 : 0);
};
fruits.sort(sortBy("name"));
// => [{name:"apple", amount: 4}, {name:"banana", amount: 2}, {name:"mango", amount: 1}, {name:"pineapple", amount: 2}]
Underscore
sortBy
_.sortBy(list, iteratee, [context])
Возвращает копию списка, отсортированную по возрастанию значений, которые
возвращает функция iteratee, вызываемая на каждом элементе списка.
Параметр iteratee может также быть названием поля, по которому
должна вестить сортировка (например length).
_.sortBy([1, 2, 3, 4, 5, 6], function(num){ return Math.sin(num); });
=> [5, 4, 6, 3, 1, 2]
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
_.sortBy(stooges, 'name');
=> [{name: 'curly', age: 60}, {name: 'larry', age: 50}, {name: 'moe', age: 40}];
Lo-Dash
sortBy
_.sortBy(collection, [iteratees=[_.identity]])
Creates an array of elements, sorted in ascending order by the results of running each element in a collection thru each iteratee. This method performs a stable sort, that is, it preserves the original sort order of equal elements. The iteratees are invoked with one argument: (value).
Arguments
- collection (Array|Object): The collection to iterate over.
- [iteratees=[_.identity]] (...(Function|Function[])): The iteratees to sort by.
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` with `callback`:
lodash.min x 154,049 ops/sec ±1.59% (86 runs sampled)
underscore-min x 104,836 ops/sec ±7.55% (69 runs sampled)
lodash.min is 56% faster.
`_.sortBy` with `callback` and `thisArg` (slow path):
lodash.min x 125,884 ops/sec ±1.77% (81 runs sampled)
underscore-min x 62,843 ops/sec ±3.37% (81 runs sampled)
lodash.min is 103% faster.
`_.sortBy` with `property` name:
lodash.min x 159,436 ops/sec ±0.60% (84 runs sampled)
underscore-min x 66,486 ops/sec ±2.94% (84 runs sampled)
lodash.min is 145% faster.