栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用js比较软件版本号?(仅数字)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用js比较软件版本号?(仅数字)

进行比较的基本思想是使用

Array.split
从输入字符串中获取零件的数组,然后比较两个数组中的零件对。如果零件不相等,我们知道哪个版本较小。

需要牢记一些重要的细节:

  1. 每对中的部分应该如何比较?这个问题想进行数字比较,但是如果我们有不是仅由数字组成的版本字符串(例如“ 1.0a”)怎么办?
  2. 如果一个版本字符串比其他版本字符串包含更多部分,应该怎么办?应该最有可能将“ 1.0”视为小于“ 1.0.1”,但是“ 1.0.0”呢?

这是您可以直接使用的实现代码(带有文档的要点):

function versionCompare(v1, v2, options) {    var lexicographical = options && options.lexicographical,        zeroExtend = options && options.zeroExtend,        v1parts = v1.split('.'),        v2parts = v2.split('.');    function isValidPart(x) {        return (lexicographical ? /^d+[A-Za-z]*$/ : /^d+$/).test(x);    }    if (!v1parts.every(isValidPart) || !v2parts.every(isValidPart)) {        return NaN;    }    if (zeroExtend) {        while (v1parts.length < v2parts.length) v1parts.push("0");        while (v2parts.length < v1parts.length) v2parts.push("0");    }    if (!lexicographical) {        v1parts = v1parts.map(Number);        v2parts = v2parts.map(Number);    }    for (var i = 0; i < v1parts.length; ++i) {        if (v2parts.length == i) { return 1;        }        if (v1parts[i] == v2parts[i]) { continue;        }        else if (v1parts[i] > v2parts[i]) { return 1;        }        else { return -1;        }    }    if (v1parts.length != v2parts.length) {        return -1;    }    return 0;}

该版本自然比较部分,不接受字符后缀,并认为“ 1.7”小于“
1.7.0”。比较模式可以更改为词典编排,较短的版本字符串可以使用可选的第三个参数自动补零。

它是ripper234的作品的略微扩展版本(谢谢)。

重要说明: 此代码使用

Array.map
Array.every
,这意味着它将无法在9之前的IE版本中运行。如果需要支持这些代码,则必须为缺少的方法提供polyfill。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/442130.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号