1 | var map = require('./map')
|
2 | var forEach = require('./each')
|
3 | var toFunction = require('to-function')
|
4 | var sortValues = require('./sort_values')
|
5 |
|
6 | module.exports = function sortBy (each, condition, isArray) {
|
7 | if (typeof isArray === 'undefined' && !Array.isArray(each)) isArray = false
|
8 | if (typeof each !== 'function') each = forEach.bind(this, each)
|
9 |
|
10 | condition = toFunction(condition)
|
11 |
|
12 | var values = map(each, function (value, key, index) {
|
13 | return { key: key, value: value, criteria: condition(value, key), index: index }
|
14 | })
|
15 |
|
16 | return sortValues(values, isArray)
|
17 | }
|