@alvarocastro/stalinsort

1.0.3 • Public • Published

Stalinsort

NPM Build Status Maintainability Coverage Status Bundle Size XO code style

Yet another implementation of stalinsort in JavaScript. Inspired by this post in r/ProgrammerHumor.

Install

npm install @alvarocastro/stalinsort

Usage

const sort = require('@alvarocastro/stalinsort');

const elements = [1, 2, 5, 3, 5, 4, 7, 6];
sort(elements);
// => [1, 2, 5, 5, 7]

sort(elements[, compare])

Returns a new sorted array based on the compare function criteria.

elements

Type: Array

List of elements to sort.

compare

Type: Function
Default: comparatorAscending

The function to use to compare two elements and find their sorting order. The expected return of the function is:

  • -1 to sort the element to the left.
  • 1 to sort the element to the right.
  • 0 when the elements are the same, no sorting is made.

A descending function is also provided in utils.js.

More examples

Reverse order

const sort = require('@alvarocastro/stalinsort');
const {comparatorDescending} = require('@alvarocastro/stalinsort/utils');

const elements = [6, 7, 4, 5, 3, 5, 2, 1];
sort(elements, comparatorDescending);
// => [6, 4, 3, 2, 1]

Custom elements

const sort = require('@alvarocastro/stalinsort');

const elements = [
	{name: 'Kyle Reese', firstAppearance: 'The Terminator'},
	{name: 'Sarah Connor', firstAppearance: 'The Terminator'},
	{name: 'John Connor', firstAppearance: 'Terminator 2: Judgement Day'},
	{name: 'T-800', firstAppearance: 'The Terminator'},
	{name: 'T-1000', firstAppearance: 'Terminator 2: Judgement Day'}
];
const comparator = function (a, b) {
	if (a.name < b.name) {
		return -1;
	} else if (a.name > b.name) {
		return 1;
	}
	return 0;
};
sort(elements, comparator);
// => [
// {name: 'Kyle Reese', firstAppearance: 'The Terminator'},
// {name: 'Sarah Connor', firstAppearance: 'The Terminator'},
// {name: 'T-800', firstAppearance: 'The Terminator'},
// ]

Contributing

Contributions are always welcome! Please run npm test before hand to ensure everything is ok.

Support

If you use this package please consider starring it :)

Package Sidebar

Install

npm i @alvarocastro/stalinsort

Weekly Downloads

3

Version

1.0.3

License

MIT

Unpacked Size

8.11 kB

Total Files

8

Last publish

Collaborators

  • alvarocastro