order-permutation

0.4.0 • Public • Published

NPM version Build Status Dependencies

order

Returns a permutation which rearranges input array.

Installation

Install from npm:

npm install order-permutation

Use as follows:

var order = require( 'order-permutation' );

order( arr, [compareFunction] )

The exported function requires as its first parameter the array for which the indices in specified order should be obtained. The optional parameter compareFunction specifies a function defining the sort order. If not supplied, the returned permutation indices of the array sort its elements in increasing order. To sort more complicated objects than numeric primitives, a custom compareFunction has to be supplied. This function compares elements a and b according to the following rules:

  • If compareFunction(a, b) is less than 0, a gets a lower index than b
  • If compareFunction(a, b) is greater than 0, b gets a lower index than a.

Therefore, the standard compare function which sorts the elements in ascending order is equivalent to

function( a, b ) {
    if (a < b) {
      return -1;
    }
    if (a > b) {
      return 1;
    }
    return 0;  
};

Examples

Increasing Sequence:

Code:

order([1, 2, 3, 4])

Output:

[0, 1, 2, 3]

Decreasing Sequence:

Code:

order([4, 3, 2, 1])

Output:

[3, 2, 1, 0]

Custom Compare Function:

Code:

var arr = [{name:"Tom", age: 28}, {name:"Lisa",age:23},{name:"Bill", age: 65}]
// order decreasing with age:
order(arr, function(a,b){
  return b.age - a.age;
});

Output:

[2, 0, 1]

Obtaining the Sorted Array

To obtain the actual sorted array, one can use the at() function of the lodash library, like so:

var arr = [5, 1, 3, 2];
var indices = order(arr);
_.at(arr, indices)

Output:

[ 1, 2, 3, 5 ]

Unit Tests

Run tests via the command npm test


License

MIT license.

Package Sidebar

Install

npm i order-permutation

Weekly Downloads

0

Version

0.4.0

License

MIT

Last publish

Collaborators

  • planeshifter