npm package npm downloads main branch status
Combine a series of sort functions to create complex sort orders.
npm install --save sort-order
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]