每天一点前端知识 - 比较版本

69 阅读1分钟

实现

const compareVersion = (loaclVersion, serviceVersion, key = '.') => {
  const lvArr = loaclVersion.split(key);
  const svArr = serviceVersion.split(key);
  const arrLen = lvArr.length;
  let needUpdateLevel = 0;
  for (let i = 0; i < arrLen; i++) {
    if (Number(lvArr[i]) < Number(svArr[i])) {
      needUpdateLevel = arrLen - i;
      break;
    } else if (Number(lvArr[i]) > Number(svArr[i])) {
      console.log(needUpdateLevel);
      break;
    }
  }
  return needUpdateLevel;
};

使用

compareVersion(a, b, key = '.');

- a:本地版本
- b:服务端版本
- key:版本分隔符,默认 `.`

返回值:

- 0:a >= b,无需更新
- 1:a < b,阶段版本号需更新
- 2:a < b,子版本号需更新
- 3:a < b,主版本号需更新

示例


compareVersion('1.5.111', '1.7.0'); // 2
compareVersion('1.105.1', '2.0.0'); // 3
compareVersion('10.0.1', '10.0.22'); // 1
compareVersion('3.2.1', '3.2.1'); // 0
compareVersion('2_22_1', '2_9_11', '_'); // 0

2.png

演示地址:ihuxy.com/play?utils=…