Package Exports
- sort-array
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (sort-array) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
sort-array
Sort an array of objects by any property value, at any depth, in any custom order.
Example
const sortBy = require('sort-array')sortBy(recordset, columnNames, [customOrder]) ⇒ Array ⏏
Kind: Exported function
| Param | Type | Description |
|---|---|---|
| recordset | Array.<object> |
Input array of objects |
| columnNames | string | Array.<string> |
One or more property expressions to sort by, e.g. 'name' or 'name.first'. |
| [customOrder] | object |
Custom sort order definitions. An object where each key is the property expression and the value is an array specifying the sort order. Example: { importance: [ 'speed', 'strength', 'intelligence' ]} |
Example
with this data
> DJs = [
{ name: 'Trevor', slot: 'twilight' },
{ name: 'Chris', slot: 'twilight' },
{ name: 'Mike', slot: 'afternoon' },
{ name: 'Rodney', slot: 'morning' },
{ name: 'Chris', slot: 'morning' },
{ name: 'Zane', slot: 'evening' }
]sort by slot using the default sort order (alphabetical)
> sortBy(DJs, 'slot')
[ { name: 'Mike', slot: 'afternoon' },
{ name: 'Zane', slot: 'evening' },
{ name: 'Chris', slot: 'morning' },
{ name: 'Rodney', slot: 'morning' },
{ name: 'Chris', slot: 'twilight' },
{ name: 'Trevor', slot: 'twilight' } ]specify a custom sort order for slot
> const slotOrder = [ 'morning', 'afternoon', 'evening', 'twilight' ]
> sortBy(DJs, 'slot', { slot: slotOrder })
[ { name: 'Rodney', slot: 'morning' },
{ name: 'Chris', slot: 'morning' },
{ name: 'Mike', slot: 'afternoon' },
{ name: 'Zane', slot: 'evening' },
{ name: 'Trevor', slot: 'twilight' },
{ name: 'Chris', slot: 'twilight' } ]sort by slot then name
> sortBy(DJs, ['slot', 'name'], { slot: slotOrder })
[ { name: 'Chris', slot: 'morning' },
{ name: 'Rodney', slot: 'morning' },
{ name: 'Mike', slot: 'afternoon' },
{ name: 'Zane', slot: 'evening' },
{ name: 'Chris', slot: 'twilight' },
{ name: 'Trevor', slot: 'twilight' } ]sort by nested property values (at any depth) using dot notation (e.g. 'inner.number')
> input = [
{ inner: { number: 5 } },
{ inner: { number: 2 } },
{ inner: { number: 3 } },
{ inner: { number: 1 } },
{ inner: { number: 4 } }
]
> sortBy(input, 'inner.number')
[ { inner: { number: 1 } },
{ inner: { number: 2 } },
{ inner: { number: 3 } },
{ inner: { number: 4 } },
{ inner: { number: 5 } } ]a custom order for a nested property looks like this:
const customOrder = {
'inner.number': [ 1, 2, 4, 3, 5 ]
}© 2015-17 Lloyd Brookes <75pound@gmail.com>. Documented by jsdoc-to-markdown.