用js實現(xiàn)軟件版本號比較

【軟件版本比較】

js中我們經(jīng)常來對比一些數(shù)據(jù)的大小,處理數(shù)據(jù),等等,前面我也說了很多比較之類的,有心的童鞋也可以去前面看看,一些數(shù)據(jù)處理,以及一些js操作數(shù)據(jù)的方法等等。

例子一:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script>
    function versionCompare(Str1,Str2){
      //第一步:使用正則,先把傳參進(jìn)來的兩個版本號中空格給替換成空。
      var nStr1 =Str1.replace(/(^\s+)|(\s+$)/gi,"");
      var nStr2 = Str2.replace(/(^\s+)|(\s+$)/gi,"");
      //第二步:進(jìn)行一次判斷,萬一我們傳進(jìn)來的是空的,提示一下,
      if(!nStr1 || !nStr2){
        alert("您輸入的兩個版本號為空");
        return true;
      }
      //第三步:使用正則來匹配截取兩個傳進(jìn)來的版本號中的版本數(shù)字
      var req=/\d(\.|\d)*\d/gi; //這個是匹配**.**.**數(shù)字的正則
      nStr1=nStr1.match(req)[0]; //match出來的是一個數(shù)組,這個匹配出來在第0個
      nStr2=nStr2.match(req)[0];
      //第四步:版本比較,先把版本號字符串切割成數(shù)組,[主版本號,次版本號,修訂號]
      var arr1 = nStr1.split('.'); //[**,**,**]
      var arr2 = nStr2.split('.');
      //第五步:分別開始分情況比較版本號中的三個版本。
      if(arr1[0]>arr2[0]){
        alert("第一個版本高于第二個版本");
        return true;
      }else if(arr1[0] == arr2[0]){
        if(arr1[1]>arr2[1]){
          alert("第一個版本高于第二個版本")
          return true;
        }else if(arr1[1] == arr2[1]){
          if(arr1[2]>arr2[2]){
            alert("第一個版本高于第二個版本")
            return true;
          }else if(arr1[2] == arr2[2]){
            alert("兩個版本號一樣");
            return false;
          }
        }
      }
      alert("第一個版本低于第二個版本")
      return false;
  }
  console.log(versionCompare("l1.11.0","p1.11.0"));
    </script>
  </head>
  <body>

  </body>
</html>

例子二:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>/title>
    <script>
    function versionCompare(Str1,Str2){
      //第一步:使用正則,先把傳參進(jìn)來的兩個版本號中空格給替換成空。
      var nStr1 =Str1.replace(/(^\s+)|(\s+$)/gi,"");
      var nStr2 = Str2.replace(/(^\s+)|(\s+$)/gi,"");
      //第二步:進(jìn)行一次判斷,萬一我們傳進(jìn)來的是空的,提示一下,
      if(!nStr1 || !nStr2){
        alert("您輸入的兩個版本號為空");
        return true;
      }
      //第三步:使用正則來匹配截取兩個傳進(jìn)來的版本號中的版本數(shù)字
      var req=/\d(\.|\d)*\d/gi; //這個是匹配**.**.**數(shù)字的正則
      nStr1=nStr1.match(req)[0]; //match出來的是一個數(shù)組,這個匹配出來在第0個
      nStr2=nStr2.match(req)[0];
      //第四步:版本比較,先把版本號字符串切割成數(shù)組,[主版本號,次版本號,修訂號]
      var arr1 = nStr1.split('.'); //[**,**,**]
      var arr2 = nStr2.split('.');
      //第五步:開始比較
      var minL=Math.min(arr1.length,arr2.length);
      var index=0;
      var diff=0;
      while(index<minL){
        //循環(huán)數(shù)組的每一項,相減的差額來做判斷
       diff=parseInt(arr1[index])-parseInt(arr2[index]);
       if(diff!=0){
          break;
       }
       index++;
      }
      diff=(diff!=0)?diff:(arr1.length-arr2.length);
      //通過diff的值與0比較,生成true(第一個大于第二個) 或者是false(不大于)
      return diff>0;
  }
  alert(versionCompare("l1.11.1","p1.11.0"));
    </script>
  </head>
  <body>

  </body>
</html>

以上,結(jié)束!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容