Im寫一個函數來比較2個版本,如果第二個版本大於第一個版本,則返回true。Javascript函數來比較兩個版本
但我的算法有一個「洞」,我無法弄清楚如何修復。
function compareversion(version1,version2){
var result=false;
if(typeof version1!=='object'){ version1=version1.toString().split('.'); }
if(typeof version2!=='object'){ version2=version2.toString().split('.'); }
for(var i=0;i<(Math.max(version1.length,version2.length));i++){
if(version1[i]==undefined){ version1[i]=0; }
if(version2[i]==undefined){ version2[i]=0; }
if(version1[i]<version2[i]){
result=true;
break;
}
}
return(result);
}
這exemples回報預期
compareversion('1','1') //false
compareversion('1','1.0.0') //false
compareversion('2.0','1.0.0') //false
compareversion('1.1','1.2') //true
compareversion('1','1.0.0.1') //true
但這
compareversion('1.1.0','1.0.1') //return true but should be false
例如,如果我們比較'11.1.2'和'3.1.2',算法不能正常工作。在比較之前,您應該將字符串轉換爲整數。請解決這個問題!順便說一句好的算法! –
@TamasPap:好點。固定。 – Dennis
這裏是小提琴它是如何工作的(正在測試它是否適合我)http://jsfiddle.net/fgprj51p/ – Grzegorz