Sort Array Elements (string with numbers), natural sort Sort Array Elements (string with numbers), natural sort jquery jquery

Sort Array Elements (string with numbers), natural sort


This is called "natural sort" and can be implemented in JS like this:

function naturalCompare(a, b) {    var ax = [], bx = [];    a.replace(/(\d+)|(\D+)/g, function(_, $1, $2) { ax.push([$1 || Infinity, $2 || ""]) });    b.replace(/(\d+)|(\D+)/g, function(_, $1, $2) { bx.push([$1 || Infinity, $2 || ""]) });        while(ax.length && bx.length) {        var an = ax.shift();        var bn = bx.shift();        var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1]);        if(nn) return nn;    }    return ax.length - bx.length;}/////////////////////////test = [    "img12.png",    "img10.png",    "img2.png",    "img1.png",    "img101.png",    "img101a.png",    "abc10.jpg",    "abc10",    "abc2.jpg",    "20.jpg",    "20",    "abc",    "abc2",    ""];test.sort(naturalCompare)document.write("<pre>" + JSON.stringify(test,0,3));