Multitest
A small library for sorting arrays by multiple criteria.
Installation
npm install multisort --save
bower install multisort --save
Basic Usage
var input = firstName: "Kate" lastName: "Bush" firstName: "George" lastName: "Bush" suffix: "Junior" firstName: "George" lastName: "Orwell" firstName: "George" lastName: "Bush" suffix: "Senior"; var criteria = 'firstName' '~lastName.length' 'suffix.charAt(1)'; // input is now sorted by firstName (ascending), then lastName.length (descending),// and finally suffix.charAt, called with 1 as the argument:// [// {firstName: "George", lastName: "Orwell"},// {firstName: "George", lastName: "Bush", suffix: "Senior"},// {firstName: "George", lastName: "Bush", suffix: "Junior"},// {firstName: "Kate", lastName: "Bush"},// ];
var input = 8 7 6 5 4 3 2 1; var criteria = {return a % 2} {return a % 3} {return a}; ; // input is now:// [6, 4, 2, 8, 3, 1, 7, 5]
Partial Application
// Passing a single argument makes a sorting function that can then be applied to lists.var sortByMod2AndMod3 = ; var input1 = 8 7 6 5 4 3 2 1;;// input1 is [6, 4, 2, 8, 3, 1, 7, 5] var input2 = 1 5 10 25 50 100;;// input2 is [10, 100, 50, 1, 25, 5]
Features
Criteria types:
- Function: Applies the given function to each element, and the return values are sorted in ascending order, using < and >.
- String: Picks out the property indicated by the string, and sorts in ascending order, using < and >. Nested properties can be accessed with dot syntax, as in "property.subproperty.subsubproperty"
- !String or ~String: As above, but sorted in descending order. This works with the functional and existential operators below.
- String(arg1, arg2...): As above, but calls the indicated property as a function with the given arguments. Arguments are split by commas, trimmed, and parsed with JSON.parse.
- String?: As above, tests whether the property is null or undefined. Items without the property are sorted before items with it.
Tests
npm test
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.
Release History
- 0.1.0 Initial release