|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
-
- [Build]: http://img.shields.io/travis/litejs/natural-compare-lite.png
- [Coverage]: http://img.shields.io/coveralls/litejs/natural-compare-lite.png
- [1]: https://travis-ci.org/litejs/natural-compare-lite
- [2]: https://coveralls.io/r/litejs/natural-compare-lite
- [npm package]: https://npmjs.org/package/natural-compare-lite
- [GitHub repo]: https://github.com/litejs/natural-compare-lite
-
-
-
- @version 1.4.0
- @date 2015-10-26
- @stability 3 - Stable
-
-
- Natural Compare – [![Build][]][1] [![Coverage][]][2]
- ===============
-
- 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".
-
- ```text
- 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
-
- ```html
- <script src=min.natural-compare.js></script>
- ```
-
- - In node.js: `npm install natural-compare-lite`
-
- ```javascript
- require("natural-compare-lite")
- ```
-
- ### Usage
-
- ```javascript
- // Simple case sensitive example
- var a = ["z1.doc", "z10.doc", "z17.doc", "z2.doc", "z23.doc", "z3.doc"];
- a.sort(String.naturalCompare);
- // ["z1.doc", "z2.doc", "z3.doc", "z10.doc", "z17.doc", "z23.doc"]
-
- // Use wrapper function for case insensitivity
- a.sort(function(a, b){
- return String.naturalCompare(a.toLowerCase(), b.toLowerCase());
- })
-
- // In most cases we want to sort an array of objects
- var a = [ {"street":"350 5th Ave", "room":"A-1021"}
- , {"street":"350 5th Ave", "room":"A-21046-b"} ];
-
- // sort by street, then by room
- a.sort(function(a, b){
- return String.naturalCompare(a.street, b.street) || String.naturalCompare(a.room, b.room);
- })
-
- // 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 model
- a.map(function(car){
- car.sort_key = (car.make + " " + car.model).toLowerCase();
- })
- a.sort(function(a, b){
- return String.naturalCompare(a.sort_key, b.sort_key);
- })
- ```
-
- - 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.
-
- ```javascript
- // Estonian alphabet
- String.alphabet = "ABDEFGHIJKLMNOPRSŠZŽTUVÕÄÖÜXYabdefghijklmnoprsšzžtuvõäöüxy"
- ["t", "z", "x", "õ"].sort(String.naturalCompare)
- // ["z", "t", "õ", "x"]
-
- // Russian alphabet
- String.alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя"
- ["Ё", "А", "Б"].sort(String.naturalCompare)
- // ["А", "Б", "Ё"]
- ```
-
-
- External links
- --------------
-
- - [GitHub repo][https://github.com/litejs/natural-compare-lite]
- - [jsperf test](http://jsperf.com/natural-sort-2/12)
-
-
- Licence
- -------
-
- Copyright (c) 2012-2015 Lauri Rooden <lauri@rooden.ee>
- [The MIT License](http://lauri.rooden.ee/mit-license.txt)
-
-
|