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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端js进行APP版本号比较方法相关的知识,希望对你有一定的参考价值。

参考技术A /**

* 比较版本号的大小,如果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

iOS 比较版本号大小的方法

比较iOS版本号大小 eg:3.2.0和3.1.0 或者 3.2.0和3.2比较
返回bool值变量YES or NO

在APP迭代更新过程中,有这样的需求,需要比较版本号的大小,然后弹出提示框提示更新.

之前版本号一直是中规中矩的按照1.1.0 --> 1.1.2这种数字变化方式.采用的方法是:将版本号字符串中的.号删除掉之后,比较两个数字的大小,后来发现在App Store中,各种APP的版本号数字变化的格式千奇百怪,1.0.11-->1.1.0,如果还采用上面的方法比较版本号,就不对了1011(本地version)肯定是大于110(线上版本),而实际上1.1.0是1.0.11的下一个版本.

 

解决方法:

版本号是分成三个模块来命名的,所以比较大小还是将三个部分剖开来比较大小兼容性强一些,万一遇到版本号命名没有按照规定的格式来,到时候大小就判断错了.

思路是这样的:三个部分,从第一个部分开始比较大小,优先级:第一部分>第二部分>第三部分,一旦分出大小就代表比较结束了,只要前面一部分大,无论后面一部分怎么小都没关系.

 

-(BOOL)compareVesionWithServerVersion:(NSString *)version{

    NSArray *versionArray = [version componentsSeparatedByString:@"."];//服务器返回版

    NSArray *currentVesionArray = [APP_VERSION componentsSeparatedByString:@"."];//当前版本

    NSInteger a = (versionArray.count> currentVesionArray.count)?currentVesionArray.count : versionArray.count;

 

    for (int i = 0; i< a; i++) {

        NSInteger a = [[versionArray safeObjectAtIndex:i] integerValue];

        NSInteger b = [[currentVesionArray safeObjectAtIndex:i] integerValue];

        if (a > b) {

            NSLog(@"有新版本");

            return YES;

        }else if(a < b){

            return NO;

        }

        return NO;

    }

 


以上是关于前端js进行APP版本号比较方法的主要内容,如果未能解决你的问题,请参考以下文章

js 比较版本号

js 比较版本号

app版本号比较

使用gulp自动化打包合并前端静态资源(CSSJS文件压缩添加版本号)

软件的版本号变更有啥原则?

JS 实现版本号比较功能