* 不用系统比较大小的函数

// 不考虑字母
function s2i(s) {
return s.split('').reduce(function(a, c) {
var code = c.charCodeAt(0);
if (48<=code && code < 58) {
a.push(code-48);
}
return a;
}, []).reduce(function(a, c) {
return 10*a + c;
}, 0);
} function versionCmp(s1, s2) {
var a = s1.split('.').map(function(s) {
return s2i(s);
});
var b = s2.split('.').map(function(s) {
return s2i(s);
});
var n = a.length < b.length ? a.length : b.length;
for (var i = 0; i < n; i++) {
if (a[i] < b[i]) {
return -1;
} else if (a[i] > b[i]) {
return 1;
}
}
if (a.length < b.length) return -1;
if (a.length > b.length) return 1;
var last1 = s1.charCodeAt(s1.length-1) | 0x20,
last2 = s2.charCodeAt(s2.length-1) | 0x20;
return last1 > last2 ? 1 : last1 < last2 ? -1 : 0;
}

  

test:

console.log( versionCmp('1.2.3a', '1.2.3b') );
console.log( versionCmp('1.2.13a', '1.2.3b') );
console.log( versionCmp('1.2.12', '1.2.12c') );
console.log( versionCmp('1.3', '1.2.12c') );
console.log( versionCmp('1.2.3a', '1.2.3A') );
console.log('------------------------------');
console.log( versionCmp('1.2.3z', '1.2.4') );

  

最新文章

  1. What&#39;s going on in background?
  2. 浩瀚技术助力批发零售商户实现PDA移动POS打印扫描进销存信息化管理
  3. c# (nop中)下拉列表(有外键)
  4. java(课程设计之记事本界面部分代码公布)
  5. 过滤器 Filter
  6. sql 计算两时间或日期 的相差的 年、 月、 日、时、分、秒,年、月、日分别的提取
  7. 【USACO 2.2.3】循环数
  8. js选项卡切换效果
  9. java.util.zip.GZIPInputStream.readUByte,Not in GZIP format错误处理
  10. C、C++、java的区别
  11. 【转】Java finally语句到底是在return之前还是之后执行?
  12. Learning-Python【27】:异常处理
  13. hadoop 设置回收站
  14. C#属性、自动属性、字段之间的区别和理解
  15. 从早期 Spring Boot 版本升级
  16. 实测—fft IP核使用(包括ifft的配置使用)
  17. linux,mac安装sentry
  18. solr特点二:Facet
  19. ACM1004:Let the Balloon Rise
  20. PHP.48-TP框架商城应用实例-后台23-权限管理-权限验证

热门文章

  1. comm tools
  2. idea中使用docker插件部署项目
  3. shell脚本基本使用教程
  4. python创建一个简单的服务
  5. js随机显示图片
  6. 【java se】java注解
  7. [ASP.NET MVC]@Scripts.Render、@Styles.Render的使用
  8. OJ 注意事项
  9. Python实现GPU加速的基本操作
  10. ES6对象扩展——部分新的方法和属性