@version 1.4.0
@date 2015-10-26
@stability 3 - Stable
Compare strings containing a mix of letters and numbers in the way a human being would in sort order. This is described as a "natural ordering".
Standard sorting: Natural order sorting: img1.png img1.png img10.png img2.png img12.png img10.png img2.png img12.png
String.naturalCompare returns a number indicating whether a reference string comes before or after or is the same as the given string in sort order. Use it with builtin sort() function.
Installation
- In browser
- In node.js:
npm install natural-compare-lite
Usage
// Simple case sensitive examplevar a = "z1.doc" "z10.doc" "z17.doc" "z2.doc" "z23.doc" "z3.doc";a;// ["z1.doc", "z2.doc", "z3.doc", "z10.doc", "z17.doc", "z23.doc"] // Use wrapper function for case insensitivitya // In most cases we want to sort an array of objectsvar a = "street":"350 5th Ave" "room":"A-1021" "street":"350 5th Ave" "room":"A-21046-b" ; // sort by street, then by rooma // When text transformation is needed (eg toLowerCase()),// it is best for performance to keep// transformed key in that object.// There are no need to do text transformation// on each comparision when sorting.var a = "make":"Audi" "model":"A6" "make":"Kia" "model":"Rio" ; // sort by make, then by modelaa
- Works well with dates in ISO format eg "Rev 2012-07-26.doc".
Custom alphabet
It is possible to configure a custom alphabet to achieve a desired order.
// Estonian alphabetStringalphabet = "ABDEFGHIJKLMNOPRSŠZŽTUVÕÄÖÜXYabdefghijklmnoprsšzžtuvõäöüxy""t" "z" "x" "õ"// ["z", "t", "õ", "x"] // Russian alphabetStringalphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя""Ё" "А" "Б"// ["А", "Б", "Ё"]
External links
Licence
Copyright (c) 2012-2015 Lauri Rooden <lauri@rooden.ee>
The MIT License