alphabetic-compare v1.1.4
alphabetic-compare
Checks whether two strings are in alphabetical order, with support for natural sort and national quirks.
import compare from 'alphabetic-compare';
['Alan 10', 'Bobby', 'Alan 2', 'Bob Smith'].sort((a,b) => compare(a, b, 'en'));
// → [Alan2, Alan10, Bob Smith, Bobby]Features
- Natural sorting of numbers
- Multiword sorting
- Internationalized sorting for different languages
- Independent of Intl
- Intl can be used as fallback
- Custom sorting rules
Keywords: Alphabetical order, alphabetization, lexicographical order, language-specific ordering conventions, collation, sorting, numeric order.
Basic usage
To compare strings in supported languages, you can use this method:
function compare(a: string, b: string, lang: ISO_639_1): -1 | 0 | 1If string a should be sorted above b, you get -1. If it sould be sorted under, you get 1. 0 means the strings are alphabetically identical, but they might still differ in non-alphabetical symbols like the apostrophe.
Advanced usage
If you want to customize the sorting algorithm, instead of language you can pass settings to the method:
interface Configuration {
language?: ISO_639_1,
nullSorting?: -1 | 0 | 1,
allowIntl?: 0 | 1 | 2,
customSorting?: Sorting
}
function compare(a: string, b: string, conf: Configuration): -1 | 0 | 1Null sorting lets you decide what happens with unknown symbols. With -1 they will be sorted above everything else, with 1 they will be sorted under everything else and with 0 (default) they will be ignored.
Intl fallback can be controlled by allowIntl. Value 0 means it won't be ever used, 1 (default) means use Intl if there's no local rule for the language, 2 means use Intl whenever it's possible.
To find out how to define your own sorting, take a look at test/basic.ts and src/lang.ts. If pass the sorting as customSorting, the selected language will be ignored.
Supported languages
- English
- Czech
- Slovak
- all languages made available by
Intl