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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM