前端js进行APP版本号比较方法

JavaScript08

前端js进行APP版本号比较方法,第1张

/*** 比较版本号的大小,如果curV 大于 reqV,则返回true,否则返回false* @param {String} curV* @param {String} reqV*/ function Version(curV, reqV) {    var arr1 = curV.toString().split('.')     var arr2 = reqV.toString().split('.')     //将两个版本号拆成数字    var minL = Math.min(arr1.length, arr2.length)     var pos = 0//当前比较位    var diff = 0//当前为位比较是否相等    var flag = false     //逐个比较如果当前位相等则继续比较下一位    while(pos <minL) {         diff = parseInt(arr1[pos]) - parseInt(arr2[pos])        if(diff == 0) {             pos++             continue        } else if(diff >0) {             flag = true             break        } else {             flag = false             break        }    }        return flag }例如:let test_v = Version(‘5.1.3’,‘5.0.1’);            console.log(test_v )            //true

一般程序版本号形式x.x.x.x的字符串,例如:1.0、1.0.0、1.0.0.0。如果直接采用字符串比较大小,会出现低版本大于高版本的结果,例如:1.10.1和1.9.2比较,就会出现"1.9.2" >"1.10.1"。所以需要对于每一位分开,采用补位的方式逐个比较。

判断IOS系统的版本号用到了JS中的userAgent,JS代码如下:

navigator.userAgent.toLowerCase()

userAgent 属性是一个只读的字符串,声明了浏览器用于 HTTP 请求的用户代理头的值。

取出协议头之后,我们可以使用正则表达式进行获取

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。

var str= navigator.userAgent.toLowerCase() 

var ver=str.match(/cpu iphone os (\d+)\_(\d+) like/)

match() 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配。

参数

searchvalue  规定要检索的字符串值。

regexp          规定要匹配的模式的 RegExp 对象。如果该参数不是 RegExp 对象,则需要首先把它传递给 RegExp 构造函数,将其转换为 RegExp 对象。

判断IOS版本号代码:

<html>

<meta charset="UTF-8"/>

<body>

<script type="text/javascript">

var str= navigator.userAgent.toLowerCase() 

var ver=str.match(/cpu iphone os (.*?) like mac os/)

if(!ver){

alert("请在Ios系统中打开")

}else{

alert("你当前的Ios系统版本为:"+ver[1].replace(/_/g,"."))

}

</script>

</body>

</html>

注:replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

参数:

regexp/substr       规定子字符串或要替换的模式的 RegExp 对象。请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象

replacement         一个字符串值。规定了替换文本或生成替换文本的函数。

上面代码中的/g代表的含义是:如果regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串,上述代码将HTTP协议头中的"9_3_2"转为"9.3.2"