zoukankan      html  css  js  c++  java
  • JS实现两版本号大小比较

    JavaScript实现版本号比对(含字母)

    昨天,有一道面试题,要求是这样的:

      用你熟悉的编程语言,实现一个比较任意两个软件版本号大小的函数,如1.2.3a与1.2.4b进行比较,后者版本号更大,要求:不可以使用系统提示的比较函数;

    对于一个接触前端开发时间较短的初级前端来说,我还是认真仔细的思考了一下,下边便是我的代码

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>版本号对比</title>
     7 </head>
     8 
     9 <body>
    10     <script>
    11         // 获取数字
    12         function toNumber(n) {
    13             var n = n.toString(),
    14                 n_arr = n.split(/D/); // 使用正则表达式,截取字符串为数组,字符串中包含非数值型,如字母,则数组元素中会出现空值
    15             if (n_arr[n_arr.length - 1] == '') {
    16                 n_arr.pop();
    17             }
    18 
    19             var n_replace = ['', '0', '00', '000', '0000'],
    20                 r_n_replace = n_replace.reverse();
    21             for (var i = 0; i < n_arr.length; i++) {
    22                 var l = n_arr[i].length;
    23                 n_arr[i] = r_n_replace[l] + n_arr[i];
    24             }
    25             var res = n_arr.join('');
    26             return res;
    27         }
    28 
    29         // 获取字母
    30         function toString(s) {
    31             var s = s.toString(),
    32                 reg = s.match(/[a-zA-Z]/g); // 截取字符串中的字母成为数组元素 
    33             if (reg != null) {
    34                 return reg;
    35             } else {
    36                 return null;
    37             }
    38         }
    39 
    40         // 版本对比
    41         function changeVersion(a, b) {
    42             var a1 = toNumber(a),
    43                 a2 = toString(a),
    44                 b1 = toNumber(b),
    45                 b2 = toString(b);
    46 
    47             if (a1 < b1) {
    48                 console.log('最新版本号为:' + b);
    49             } else if (a1 > b1) {
    50                 console.log('最新版本号为:' + a);
    51             } else if (a1 === b1) {
    52                 // 版本号相同时,对比字母,将其转为16进制数,进行比对
    53                 var a2_str = a2[0].toString(16),
    54                     b2_str = b2[0].toString(16);
    55                 if (a2_str < b2_str) {
    56                     console.log('最新版本号为:' + b);
    57                 } else if (a2_str > b2_str) {
    58                     console.log('最新版本号为:' + a);
    59                 } else if (a2_str === b2_str) {
    60                     console.log('两版本号相同!最新版本号为:' + a);
    61                 }
    62             }
    63         }
    64         var a = '1.2.3a',
    65         b = '1.2.2c';
    66         changeVersion(a, b);
    67 
    68         var v_n = '1.2.4',
    69         v_o = '1.1.1c';
    70     changeVersion(v_n, v_o);
    71     </script>
    72 </body>
    73 
    74 </html>
  • 相关阅读:
    SaltStack salt-ssh 用法
    类的属性
    类的定义
    SaltStack 批量管理任务计划
    SaltStack 批量执行脚本
    SaltStack 批量分发目录
    SaltStack 批量分发文件
    SaltStack 批量安装软件
    SaltStack Grains 和 Pillar
    RPC框架原理简述:从实现一个简易RPCFramework说起(转)
  • 原文地址:https://www.cnblogs.com/zxk5211/p/web_7.html
Copyright © 2011-2022 走看看