比较版本号

114 阅读1分钟

通过将版本号字符串分割成单独的数值部分,然后逐个比较这些数值。

首先将版本号字符串按照点(.)分割成数组,然后逐个比较每个位置上的数值。如果某个位置上的数值不相等,则可以直接判断版本号的大小。如果所有比较的位置数值都相等,则版本号相同。在比较时,如果某个版本号的分割数组长度较短,则缺失的部分视为0。

/**
 * 通过将版本号字符串分割成单独的数值部分,然后逐个比较这些数值。
 * 首先将版本号字符串按照点(.)分割成数组,然后逐个比较每个位置上的数值。如果某个位置上的数值不相等,则可以直接判断版本号的大小。如果所有比较的位置数值都相等,则版本号相同。在比较时,如果某个版本号的分割数组长度较短,则缺失的部分视为0。
 * @param destVersion 目标版本
 * @param curVersion 当前版本
 * @returns
 */
export const compareAppVersion = (destVersion: string, curVersion: string) => {
  const version1 = destVersion.split('.')
  const version2 = curVersion.split('.')
  const length = Math.max(version1.length, version2.length)
  for (let i = 0; i < length; i += 1) {
    const num1 = parseInt(version1[i] || '0', 10)
    const num2 = parseInt(version2[i] || '0', 10)

    if (num1 > num2) {
      return 1 // 当前版本小于目标版本
    }
    if (num1 < num2) {
      return -1 // 当前版本大于目标版本
    }
  }
  return 0 // 当前版本等于目标版本
}