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

// 不考虑字母
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. CTF-flask模板注入学习

    今天又看到了一道这样的题,之前一直都学不明白的东西 反反复复给你看的时候,就想搞明白了. 我们做题的,需要知道flask是怎么运行的就行了. 这个就是一个最简单的flask应用,当我们访问的时候,就会 ...

  2. Vmware15的安装以及Ubunt的在虚拟机上的安装

    一.vmware15安装 1.百度网盘地址 链接:https://pan.baidu.com/s/1Lgez57n50QEW97HNdYZCfQ 提取码:9wvy 2.下载到本地后 3.双击安装程序 ...

  3. centos上安装zookeeper

    下载zookeeper # 创建zookeeper文件夹 cd /usr/local/ mkdir zookeeper cd zookeeper # 下载 解压 wget https://mirror ...

  4. 安装RHEL7配置本地yum源 -- yum不能安装时,在本地安装,亲测成功

    RHEL7 本地yum源配置我们在安装Redhat的时候一般都不会填写注册信息,因为该产品是要购买的,所以我们在使用安装好的Redhat时有的功能是受限的,使用yum源install就是其中之一.那么 ...

  5. mysql几种连接方式区别

    mysql的几种join 2017年03月19日 14:49:07 carl-zhao 阅读数:7845 标签: mysqlsqljoin 更多 个人分类: MySQL 版权声明:本文为博主原创文章, ...

  6. jvm系列(六):jvm调优-工具篇

    ## jdk自带的工具### jconsole Jconsole(Java Monitoring and Management Console)是从java5开始,在JDK中自带的java监控和管理控 ...

  7. Ajax 与 Struts 1

    Xml配置 <action path="/product/product/validateCurrencyDecimalSupport" type="com.neu ...

  8. mybatis根据表逆向自动化生成代码(自动生成实体类、mapper文件、mapper.xml文件)

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  9. YARN的工作过程

    yarn的工作执行流程图 1.用户向YARN中提交应用程序 2.ResourceManager为该应用程序找到一个可用的NodeManager 并分配一个Container,然后在这个Containe ...

  10. 使用Xshell连接虚机安装的vyOS

    本文主要讲解:使用虚机(Vitual Box)安装的vyOS,如何使用Xshell来通过ssh方式连接. 首先咱们安装vyOS 1.安装vyOS 先用Vitual Box安装vyOS镜像. 接下来的操 ...