2014-10-07 3 views
0
function compareVersions (version1, version2) { 
if (version1 >= version2) { 
    return true; 
} 
else { 
    return false; 
} 

compareVersions("11", "10");     // returns true 
compareVersions("11", "11");     // returns true 
compareVersions("10.4.6", "10.4");    // returns true 
compareVersions("10.4", "11");     // returns false 
compareVersions("10.4", "10.10");    // returns false 
compareVersions("10.4.9", "10.5");    // returns false 

Сравнительные показатели ("10.4", "10.10"); это не сравнение с подрывной деятельностью, так что это будет правда. Как я могу это исправить?Сравнить Версии в функции

+1

Это сравнение, но '10.4' больше, чем' 10.10' – elclanrs

+0

10.10 больше 10.4, но возвращает true, потому что оно сравнивает 10> 10, а не с subversion. –

+0

Номера, разделенные точкой, не совпадают с десятичными числами. Вам необходимо проанализировать версию и сравнить ее соответствующим образом. –

ответ

0
function compareVersions(v1, v2){ 
    var _v1 = v1.split('.'); 
    var _v2 = v2.split('.'); 

    var i=0; 
    for(; i<_v1.length && i<_v2.length && _v1[i]*1==_v2[i]*1; i++); 
    return !(_v1[i]*1<_v2[i]*1); 
} 
0

Учитывайте, что сравнения имеют смысл только с контекстом. Предполагается (ужасное слово), что вы соблюдаете semantic versioning.

Если да, то вы могли бы использовать библиотеку, которая занимается этим более полно, такие, как https://github.com/npm/node-semver

Без такого контекста, вам не придется беспокоиться о «1.0.0-альфа» сравнивают с «1.0.0» и так далее.