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