https://github.com/cameronhunter/sort-order
Combine a series of sort functions to create complex sort orders.
https://github.com/cameronhunter/sort-order
Last synced: over 1 year ago
JSON representation
Combine a series of sort functions to create complex sort orders.
- Host: GitHub
- URL: https://github.com/cameronhunter/sort-order
- Owner: cameronhunter
- License: mit
- Created: 2016-03-18T06:20:42.000Z (about 10 years ago)
- Default Branch: main
- Last Pushed: 2024-05-01T21:15:35.000Z (about 2 years ago)
- Last Synced: 2024-10-12T07:16:07.374Z (over 1 year ago)
- Language: TypeScript
- Size: 203 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# `sort-order`
[](https://www.npmjs.com/package/sort-order)
[](https://www.npmjs.com/package/sort-order)
[](https://github.com/cameronhunter/sort-order/actions/workflows/post-merge.yml)
> Combine a series of sort functions to create complex sort orders.
## Install
```bash
npm install --save sort-order
```
## Example
Sort an array of objects by `creator` first, then `joinTime` and finally `id`:
```javascript
import sortBy from 'sort-order';
// Items to order
const a = { creator: true, joinTime: 0, id: 987 };
const b = { creator: false, joinTime: 1, id: 123 };
const c = { creator: false, joinTime: 1, id: 456 };
const d = { creator: false, joinTime: 2, id: 789 };
// Individual sort functions
const creator = (a, b) => (a.creator && -1) || (b.creator && 1) || 0;
const field = (field) => (a, b) => a[field] - b[field];
// Combined sort function
const ordering = sortBy(creator, field('joinTime'), field('id'));
// Sort!
[d, c, b, a].sort(ordering); // [a, b, c, d]
```