| 12345678910111213141516171819202122232425262728293031 | // adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956var NUMBER_PATTERN = /([0-9]+)/;function naturalCompare(value1, value2) {  var keys1 = ('' + value1).split(NUMBER_PATTERN).map(tryParseInt);  var keys2 = ('' + value2).split(NUMBER_PATTERN).map(tryParseInt);  var key1;  var key2;  var compareFirst = Math.min(keys1.length, keys2.length);  var i, l;  for (i = 0, l = compareFirst; i < l; i++) {    key1 = keys1[i];    key2 = keys2[i];    if (key1 != key2) {      return key1 > key2 ? 1 : -1;    }  }  return keys1.length > keys2.length ? 1 : (keys1.length == keys2.length ? 0 : -1);}function tryParseInt(value) {  return ('' + parseInt(value)) == value ?    parseInt(value) :    value;}module.exports = naturalCompare;
 |