JSFiddle - React, Tailwind, and code Playground
by blesh
JavaScript
function sortNicely(coll) {
var keys = coll.map(function (x) {
var keys = x.split(/([0-9\.]+)/).map(function (y) {
return isNaN(y) ? y : parseFloat(y);
});
keys.val = x;
return keys;
});
var sortKeys = function () {
var resort = false;
keys.sort(function (a, b) {
var len = Math.min(a.length, b.length),
i;
for (i = 0; i < len; i++) {
if (a[i] !== b[i]) {
if(i === len - 1) {
resort = true;
}
return a[i] - b[i];
}
}
if(resort) sortKeys();
});
};
return keys.map(function (x) {
return x.val;
});
}
var toSort = [
'loser 10',
'user 1',
'user 2',
'user 10.1',
'user 101',
'loser 1',
'loser 2',
'user 10',
'loser 20'];
console.log(sortNicely(toSort));