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

// 不考虑字母
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') );

  

javascript 比较版本号大小 字符串的更多相关文章

  1. JS实现两版本号大小比较

    JavaScript实现版本号比对(含字母) 昨天,有一道面试题,要求是这样的: 用你熟悉的编程语言,实现一个比较任意两个软件版本号大小的函数,如1.2.3a与1.2.4b进行比较,后者版本号更大,要 ...

  2. C# 如何比较版本号大小

    最近遇到了一个数据迁移的问题,因为配置文件的结构发生变化,所以要把低版本的用户数据保存下来,存到最新版本中去. 这里就有一个比较版本号大小的问题了,网上乱七八糟算法一堆,大致意思就是用分割字符串的方法 ...

  3. JavaScript实现版本号比较

    /* * JavaScript实现版本号比较 * 传入两个字符串,当前版本号:curV:比较版本号:reqV * 调用方法举例:Version('5.12.3','5.12.2'),将返回true * ...

  4. JavaScript框架设计(四) 字符串选择器(选择器模块结束)

    JavaScript框架设计(四) 字符串选择器(选择器模块结束) 经过前面JavaScript框架设计(三) push兼容性和选择器上下文的铺垫,实现了在某一元素下寻找,现在终于进入了字符串选择器 ...

  5. JavaScript中常见的字符串操作函数及用法

    JavaScript中常见的字符串操作函数及用法 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信 ...

  6. JavaScript中,提取子字符串方法:Slice、Substring、Substr的比较。

    在JavaScript中,提取子字符串主要是通过 Slice.Substring.Substr 三个方法之一. // slice // 语法: string.slice(beginSlice [, e ...

  7. Java与JavaScript中判断两字符串是否相等的区别

    JavaScript是一种常用的脚本语言,这也决定了其相对于其他编程语言显得并不是很规范.在JavaScript中判断两字符串是否相等 直接用==,这与C++里的String类一样.而Java里的等号 ...

  8. iOS 比较版本号大小的方法

    比较iOS版本号大小 eg:3.2.0和3.1.0 或者 3.2.0和3.2比较 返回bool值变量YES or NO -(BOOL)compareVesionWithServerVersion:(N ...

  9. JS面试Q&A(续):Javascript数组排序, 默认是字符串Unicode排序, 不适合数字

    Q:下面代码段的执行后data里面的数据是什么?为什么? var data= [40,1,5,200] data.sort(); A: data的内容是[1, 200, 40, 5] 因为,Javas ...

随机推荐

  1. MATLAB—M函数文件

    文章目录 一.M文件 1.脚本文件和函数文件的区别 二.M函数文件 1.创建方法 2.文件形式 2.函数形参及注释 3.函数的调用 4.函数变量 5.主函数.子函数 三.函数句柄 一.M文件 首先,要 ...

  2. python创建一个简单的服务

    python -m http.server 8000 --bind 0.0.0.0 8000为端口 0.0.0.0允许远程访问

  3. vue--三种组件中之间的传值

    参考网址:https://www.jianshu.com/p/46573a741c29 一.父子组件之间的传值----props/$emit 组件之间的传值,我们比较常用到的是props/$emit ...

  4. C#基础知识---is与as

    一.is与as对比 is检查一个对象是否兼容于指定的类型,并返回一个Boolean值:true或者fasle. 注:is操作符永远不会抛出异常 经常按如下方法使用: ClassA { .... } O ...

  5. 06.SpringMVC之参数绑定

    默认支持的参数类型一 HttpServletRequest .HttpServletResponse .HttpSession.java.security.Principal.Locale .Inpu ...

  6. 搞懂Redis协议RESP

    RESP (REdis Serialization Protocal) Redis客户端和服务端之间通信的协议.它很简单,建立在TCP协议上,提供简单.高性能.可读性强的数据序列化的规范和语义. 5种 ...

  7. OVN入门

    参考链接 如何借助 OVN 来提高 OVS 在云计算环境中的性能 OVN简介 Open vSwitch Documentation OVSDB介绍及在OpenDaylight中的调用 OpenDayl ...

  8. php常用的函数

    addslashes: 字符串加入斜线.bin2hex: 二进位转成十六进位.chop: 去除连续空白.chr: 返回序数值的字符.chunk_split: 将字符串分成小段.convert_cyr_ ...

  9. iptables开启后造成本地套接字阻塞的问题

    前段时间,我使用iptables实现了针对IP地址与MAC地址的白名单功能,即将INPUT链的默认规则设为DROP: iptables -P INPUT DROP 这样就能拒绝一切外来报文.随后只需要 ...

  10. Confluence7.4安装并破解汉化教程

    Confluence是一款由JAVA编写用于企业知识库管理协同软件,多用于构建企业内部WIKI,支持多人协作,共享信息等. 当前系统环境Centos7.9,内存至少2G以上,数据库采用MySQL5.7 ...