You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							31 lines
						
					
					
						
							772 B
						
					
					
				
			
		
		
	
	
							31 lines
						
					
					
						
							772 B
						
					
					
				// adapted from http://nedbatchelder.com/blog/200712.html#e20071211T054956 | 
						|
 | 
						|
var 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;
 | 
						|
 |