sortBy.js 894 B

12345678910111213141516171819202122232425262728
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.SortBy = void 0;
  4. const fields_1 = require("./utils/fields");
  5. /**
  6. * Immutable data sort by specified fields.
  7. */
  8. const SortBy = (options) => {
  9. const { fields: F = [] } = options;
  10. const normalizedF = (0, fields_1.normalizeFields)(F, true);
  11. return (data) => {
  12. const comparator = (a, b) => normalizedF.reduce((ret, [field, order = true]) => {
  13. if (ret !== 0) {
  14. return ret;
  15. }
  16. if (order) {
  17. return a[field] < b[field] ? -1 : +(a[field] !== b[field]);
  18. }
  19. else {
  20. return a[field] > b[field] ? -1 : +(a[field] !== b[field]);
  21. }
  22. }, 0);
  23. return [...data].sort(comparator);
  24. };
  25. };
  26. exports.SortBy = SortBy;
  27. exports.SortBy.props = {};
  28. //# sourceMappingURL=sortBy.js.map