Skip to content

peternewnham/array-autosort

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Array Autosort

Automatically sorted arrays.

Automatic ascending, descending or custom sorting of arrays. After enabling autosort, adding new entries to the array will automatically sort the array.

Supported Environments: Chrome, Firefox, Edge and NodeJS 6+

Note: this feature relies on the Proxy object so is not suitable for any environment that does not have it implemented.

Installation

npm

npm install array-autosort

yarn

yarn add array-autosort

Usage

// common js
const autosort = require('array-autosort');
const arr = autosort([1,2,3]);

// es6 modules
import autosort from 'array-autosort';
const arr = autosort([1,2,3]);

API

autosort([arr, sorter])

Returns an array.

arr

Type: Array

Array to autosort. If not provied, an empty array will be used by default.

sorter

Type: Function or Boolean

If undefined or false the sorter will be an ascending sort (default behaviour) If true the sorter will be a descending sort If Function it will be used as a custom sort function

arr.cancelAutosort()

Stops autosorting the array and returns it.

Examples

// sort ascending
var arr = autosort([10,5,1]); // [1,5,10]
arr.push(6); // [1,5,6,10]
arr.unshift(3); // [1,3,5,6,10]

// false is also an alias for ascending sort
autosort([3,2,1], false); // [1,2,3]

// sort descending
var arr = autosort([1,2,3], true); // [3,2,1]
arr.push(10); // [10,3,2,1]

// custom sorter
var sorter = function(a,b) {
  var aId = a.id;
  var bId = b.id;
  return aId === bId ? 0 : (aId < bId ? -1 : 1);
}
var arr = autosort([{id:10},{id:4},{id:20}], sorter); // [{id:4},{id:10},{id:20}]
arr.push({id:13}); // [{id:4},{id:10},{id:13},{id:20}]

// array.reverse will also reverse the autosorter
var arr = autosort([10,5,1]); // [1,5,10]
arr.push(3); // [1,3,5,10]
arr.reverse(); // [10,5,3,1]
arr.push(8); // [10,8,5,3,1]

// cancel autosort
var arr = autosort([10,5,1]); // [1,5,10]
arr = arr.cancelAutosort();
arr.push(3); // [1,5,10,3]