GithubHelp home page GithubHelp logo

alpha-sort's Introduction

alpha-sort

Alphabetically sort an array of strings

With correct sorting of unicode characters. Supports natural sort order with an option.

Install

$ npm install alpha-sort

Usage

import alphaSort from 'alpha-sort';

['b', 'a', 'c'].sort(alphaSort());
//=> ['a', 'b', 'c']

['b', 'a', 'c'].sort(alphaSort({descending: true}));
//=> ['c', 'b', 'a']

['B', 'a', 'C'].sort(alphaSort({caseInsensitive: true}));
//=> ['a', 'B', 'C']

['file10.txt', 'file2.txt', 'file03.txt'].sort(alphaSort({natural: true}));
//=> ['file2.txt', 'file03.txt', 'file10.txt']

API

alphaSort(options?)

Get a comparator function to be used as argument for Array#sort.

options

Type: object

descending

Type: boolean
Default: false

Whether or not to sort in descending order.

caseInsensitive

Type: boolean
Default: false

Whether or not to sort case-insensitively.

Note: If two elements are considered equal in the case-insensitive comparison, the tie-break will be a standard (case-sensitive) comparison. Example:

import alphaSort from 'alpha-sort';

['bar', 'baz', 'Baz'].sort(alphaSort({caseInsensitive: true}));
//=> ['bar', 'Baz', 'baz']
natural

Type: boolean
Default: false

Whether or not to sort using natural sort order (such as sorting 10 after 2).

Note: If two elements are considered equal in the natural sort order comparison, the tie-break will be a standard (non-natural) comparison. Example:

import alphaSort from 'alpha-sort';

['file10.txt', 'file05.txt', 'file0010.txt'].sort(alphaSort({natural: true}));
//=> ['file05.txt', 'file0010.txt', 'file10.txt']
preprocessor

Type: function
Default: undefined

A custom function that you can provide to manipulate the elements before sorting. This does not modify the values of the array; it only interferes in the sorting order.

This can be used, for example, if you are sorting book titles in English and want to ignore common articles such as the, a or an:

import alphaSort from 'alpha-sort';

['The Foo', 'Bar'].sort(alphaSort({
	preprocessor: title => title.replace(/^(?:the|a|an) /i, '')
}));
//=> ['Bar', 'The Foo']

Note: If two elements are considered equal when sorting with a custom preprocessor, the tie-break will be a comparison without the custom preprocessor.

Related

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.