sortBy.js 758 B

123456789101112131415161718192021222324
  1. import { normalizeFields } from './utils/fields';
  2. /**
  3. * Immutable data sort by specified fields.
  4. */
  5. export const SortBy = (options) => {
  6. const { fields: F = [] } = options;
  7. const normalizedF = normalizeFields(F, true);
  8. return (data) => {
  9. const comparator = (a, b) => normalizedF.reduce((ret, [field, order = true]) => {
  10. if (ret !== 0) {
  11. return ret;
  12. }
  13. if (order) {
  14. return a[field] < b[field] ? -1 : +(a[field] !== b[field]);
  15. }
  16. else {
  17. return a[field] > b[field] ? -1 : +(a[field] !== b[field]);
  18. }
  19. }, 0);
  20. return [...data].sort(comparator);
  21. };
  22. };
  23. SortBy.props = {};
  24. //# sourceMappingURL=sortBy.js.map