【study】js比较版本号

37 阅读1分钟
/**
 * 比较两个版本号
 * @param {string} version1 - 版本号1
 * @param {string} version2 - 版本号2
 * @returns {number} - 如果 version1 > version2 返回 1,version1 < version2 返回 -1,相等返回 0
 */
function compareVersions(version1, version2) {
  // 拆分版本号为数组
  const v1Parts = version1.split('.').map(Number);
  const v2Parts = version2.split('.').map(Number);

  // 取两个版本号部分的最大长度
  const maxLength = Math.max(v1Parts.length, v2Parts.length);

  for (let i = 0; i < maxLength; i++) {
    // 取得各部分的值,默认值为 0
    const v1 = v1Parts[i] || 0;
    const v2 = v2Parts[i] || 0;

    // 比较各部分
    if (v1 > v2) {
      return 1;
    } else if (v1 < v2) {
      return -1;
    }
  }

  // 如果所有部分都相等,则版本号相等
  return 0;
}

// 测试示例
console.log(compareVersions('1.0.0', '1.0.1')); // -1
console.log(compareVersions('1.2.0', '1.10.0')); // -1
console.log(compareVersions('1.2.0', '1.2')); // 0
console.log(compareVersions('1.2.0', '1.2.0.0')); // 0
console.log(compareVersions('2.0', '1.10.0')); // 1
console.log(compareVersions('1.2.3', '1.2.3')); // 0