Giter Club home page Giter Club logo

natural-sort's Introduction

web component logo

Natural sort algorithm with unicode support

The algorithm is written by Jim Palmer and found at http://www.overset.com/2008/09/01/javascript-natural-sort-algorithm/.

I, javve, only put it into a Component.

Installation

$ component install javve/natural-sort

Example

var naturalSort = require('natural-sort');

var values = ['B', 'a', 'D', 'c'];

values.sort(naturalSort); // ['B', 'D', 'a', 'c']

values.sort(function(a, b) {
    return naturalSort(a, b, { insensitive: true });
}); // ['a', 'B', 'c', 'D']

values.sort(function(a, b) {
    return naturalSort(a, b, { insensitive: true, desc: true })
}); // ['D', 'c', 'B', 'a']


var values = [
    { val: 'B' },
    { val: 'a' },
    { val: 'D' },
    { val: 'c' }
];

values.sort(function(a, b) {
    return naturalSort(a.val, b.val, { insensitive: true });
}); // ['a', 'B', 'c', 'D']

Find more examples at http://www.overset.com/2008/09/01/javascript-natural-sort-algorithm/ or look at the tests in /test. It's quite impressive. Handles dates, etc.

License

MIT

natural-sort's People

Contributors

javve avatar 0xadri avatar thorin avatar

Stargazers

Kraiwith Kamchu avatar  avatar  avatar Mohammad Julfikar avatar Logan King (DarkComet) avatar JeiHO avatar  avatar  avatar JavaProgrammer avatar Khoa Nguyen avatar Muhammad Adeel avatar  avatar Rahil Wazir avatar 曹文忠 avatar irayer avatar  avatar Aha!! avatar xeLL avatar Cory Gross avatar Nguyen Nhut Truong avatar Micah avatar JT5D avatar Paul Cookie avatar nhducit avatar Ari Palo avatar Ryun Shofner avatar Emily Marigold Klassen avatar jiangplus avatar Dmitry Polushkin avatar Nikos M. avatar  avatar Yosh avatar Ben Evans avatar Jeremiah Senkpiel avatar Aleksey Kulikov avatar Matt Mueller avatar Nathan Rajlich avatar Brandon Burkeen avatar David Chambers avatar Erik Eng avatar

Watchers

Jim Palmer avatar  avatar James Cloos avatar  avatar  avatar

natural-sort's Issues

Sorting incorrect when there is a space

var stringAlphanumericalOne = [' ','1','a'];
var stringAlphanumericalTwo = ['img ','img1','imga', 'imgz'];
var stringAlphanumericalThree = ['img 99','img199','imga99', 'imgz99'];

console.log( stringAlphanumericalOne.sort(naturalSort) );
console.log( stringAlphanumericalTwo.sort(naturalSort) );
/* in the call below it fails! order should be ["img 99", "img199", "imga99", "imgz99"] */
console.log( stringAlphanumericalThree.sort(naturalSort) );

see live on http://jsbin.com/cipimosedoqe/1/edit?js,console

module should be stateless

Storing state in a module of this nature strikes me as dangerous. It forces users to code defensively to avoid being affected by other consumers of the library. I suggest changing the API to work something like this:

var naturalSort = require('natural-sort');

var values = ['B', 'a', 'D', 'c'];

values.sort(naturalSort); // ['B', 'D', 'a', 'c']

values.sort(naturalSort({insensitive: true})); // ['a', 'B', 'c', 'D']

values.sort(naturalSort({desc: true})); // ['D', 'c', 'B', 'a']

Or, if you want to preserve the current API, let users modify an instance:

var NaturalSort = require('natural-sort');

var naturalSort = new NaturalSort();
naturalSort.insensitive = true;
// ...

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.