zoukankan      html  css  js  c++  java
  • JS 实现版本号比较功能

    js实现一个客户端版本号的统计,目前该功能可以实现版本号中数字版本的统计,例如2.2.3 <2.2.3.1, 1.2.3<2.0.0,原理就是从高版本号到次版本号依次比较

     1 if (!Array.prototype.trim){
     2                 Array.prototype.trim=function(){
     3                     var  arr=[];
     4                     this.forEach(function(e){
     5                         if(e.match(/S+/))  arr.push(e);
     6                     })
     7                     return arr;
     8                 }
     9             }
    10 
    11 function version_compare(a,b) {
    12                                 var a_str=a.name.toString();
    13                                 var a_version=a_str.split(/D+/).trim();
    14                                 var b_str=b.name.toString();
    15                                 var b_version=b_str.split(/D+/).trim();
    16 
    17                                 var aLength = a_version.length;
    18                                 var bLength = b_version.length;
    19                                 var minL = Math.min(aLength,bLength);
    20                                     var r = null
    21                                     for (var i = 0; i < minL; i++) {
    22                                        //此处要转成Number类型,不然比较会出现15<6的情况,可能由于正则匹配造成的,还没有详细探究原因
    23                                         var aNum = new Number(a_version[i]);
    24                                         var bNum = new Number(b_version[i]);
    25                                         if (aNum < bNum) {
    26                                             r = 1
    27                                             break;
    28 
    29                                         } else if (aNum >bNum) {
    30                                             r = -1;
    31                                             break;
    32                                         } else if (i == minL-1 && aNum == bNum) {
    33 
    34                                             if(aLength>minL){
    35                                                 r = 1;
    36                                                 break;
    37                                             }else if(bLength>minL) {
    38                                                 r = -1;
    39                                                 break;
    40                                             }
    41                                         }
    42 
    43                                     }
    44                                 return r;
    45                                 }
  • 相关阅读:
    4.iptables 网络防火墙
    iterator not dereferencable问题
    秒杀多线程系列中的题目
    说说僵尸和孤儿进程的那点儿事
    Linux的fork()写时复制原则(转)
    linux进程原语之fork()
    linux--多进程进行文件拷贝
    哈夫曼树与哈夫曼编码
    csp公共钥匙盒
    字典树
  • 原文地址:https://www.cnblogs.com/gl-developer/p/8417003.html
Copyright © 2011-2022 走看看