Skip to content

Instantly share code, notes, and snippets.

@emreerkan
Last active December 20, 2015 16:49
Show Gist options
  • Select an option

  • Save emreerkan/6164139 to your computer and use it in GitHub Desktop.

Select an option

Save emreerkan/6164139 to your computer and use it in GitHub Desktop.
Compare two software versions (like 1.3 or 2.10.1434 etc) with an operator (<, >, >=, <=, ==, !=)
function compareVersions(left, operator, right) {
var i, il, bigger;
left = left.split('.');
right = right.split('.');
if('==' == operator && left.length == right.length) {
return left == right;
}
if('!=' == operator && left.length == right.length) {
return left != right;
}
for(i = 0, il = left.length; i < il; i++) {
if(right.length == i) {
bigger = 'left';
break;
}
if(parseInt(left[i], 10) > parseInt(right[i], 10)) {
bigger = 'left';
break;
}
if(parseInt(right[i], 10) > parseInt(left[i], 10)) {
bigger = 'right';
break;
}
}
if(left.length != right.length) {
bigger = 'right';
}
if('==' == operator) {
return !bigger;
}
if('!=' == operator) {
return !!bigger;
}
if(('<=' == operator || '>=' == operator) && !bigger) {
return true;
}
if('>' == operator) {
return 'left' == bigger;
}
if('<' == operator) {
return 'right' == bigger;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment