sort-order

Combine a series of sort functions to create complex sort orders

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
sort-order
1.0.16 years ago6 years agoMinified + gzip package size for sort-order in KB

Readme

sort-order
Build Status NPM Version License
Combine a series of sort functions to create complex sort orders.

Install

npm install --save sort-order

Example

Sort an array of objects by creator first, then joinTime and finally id:
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]