12345678910111213141516171819202122232425262728 |
- var safeCb = require('./safeCb');
- var pluck = require('./pluck');
- var map = require('./map');
- var isUndef = require('./isUndef');
- exports = function(obj, iteratee, ctx) {
- iteratee = safeCb(iteratee, ctx);
- var idx = 0;
- return pluck(
- map(obj, function(val, key) {
- return {
- val: val,
- idx: idx++,
- criteria: iteratee(val, key, obj)
- };
- }).sort(function(left, right) {
- var a = left.criteria;
- var b = right.criteria;
- if (a !== b) {
- if (a > b || isUndef(a)) return 1;
- if (a < b || isUndef(b)) return -1;
- }
- return left.idx - right.idx;
- }),
- 'val'
- );
- };
- module.exports = exports;
|