项目作者: chuvikovd

项目描述 :
Tiny multi column sorting JS helper
高级语言: TypeScript
项目地址: git://github.com/chuvikovd/multi-column-sort.git
创建时间: 2020-03-20T17:38:07Z
项目社区:https://github.com/chuvikovd/multi-column-sort

开源协议:MIT License

下载


multi-column-sort

Tiny, zero-dependency multi column sorting helper.

npm
CircleCI
Codecov
GitHub

Installation

With npm:

  1. $ npm i multi-column-sort

or with yarn:

  1. $ yarn add multi-column-sort

Usage

  1. import multiColumnSort from 'multi-column-sort'
  2. const data = [
  3. { firstName: 'Richards', lastName: 'Shepard', balance: '$2,657.70' },
  4. { firstName: 'Bessie', lastName: 'Henry', balance: '$3,202.83' },
  5. { firstName: 'Richards', lastName: 'Hammond', balance: '$3,441.19' },
  6. { firstName: 'Allison', lastName: 'Church', balance: '$1,616.60' },
  7. { firstName: 'Bennett', lastName: 'Ferrell', balance: '$1,165.54' }
  8. ]
  9. const getColumnValue = (column, value) => {
  10. switch (column) {
  11. case 'balance':
  12. return parseFloat(value.replace(/\,|\$/g, ''))
  13. default:
  14. return value
  15. }
  16. }
  17. const sorted = multiColumnSort(
  18. data,
  19. [
  20. ['firstName', 'ASC'],
  21. ['balance', 'DESC']
  22. ],
  23. getColumnValue
  24. )
  25. /* Or: */
  26. const sorted = multiColumnSort(
  27. data,
  28. {
  29. firstName: 'ASC',
  30. balance: 'DESC'
  31. },
  32. getColumnValue
  33. )
  34. /* sorted: [
  35. { firstName: 'Allison', lastName: 'Church', balance: '$1,616.60' },
  36. { firstName: 'Bennett', lastName: 'Ferrell', balance: '$1,165.54' },
  37. { firstName: 'Bessie', lastName: 'Henry', balance: '$3,202.83' },
  38. { firstName: 'Richards', lastName: 'Hammond', balance: '$3,441.19' },
  39. { firstName: 'Richards', lastName: 'Shepard', balance: '$2,657.70' }
  40. ] */

API

  1. multiColumnSort(array, sortArrayOrObject, getColumnValue)

Parameters

  • array array Array of objects to be sorted.
  • sortArrayOrObject array or object Array of tuples or object defining columns to be sorted by, order and direction e.g. [['name', 'ASC'], ['city', 'DESC']] or { name: 'ASC', city: 'DESC' }.
  • getColumnValue function Optional, by default all values are cast to string. Takes column and value arguments, must return value for comparison.