123456789101112131415161718192021222324 |
- import cb from './_cb.js';
- import pluck from './pluck.js';
- import map from './map.js';
-
- // Sort the object's values by a criterion produced by an iteratee.
- export default function sortBy(obj, iteratee, context) {
- var index = 0;
- iteratee = cb(iteratee, context);
- return pluck(map(obj, function(value, key, list) {
- return {
- value: value,
- index: index++,
- criteria: iteratee(value, key, list)
- };
- }).sort(function(left, right) {
- var a = left.criteria;
- var b = right.criteria;
- if (a !== b) {
- if (a > b || a === void 0) return 1;
- if (a < b || b === void 0) return -1;
- }
- return left.index - right.index;
- }), 'value');
- }
|