getSemverVersion方法关于版本号排序问题

getSemverVersion方法关于版本号排序问题

# 具体遇到的问题

在尝试版本号排序的时候,发现将版本号顺序打乱,并不会进行排序 


# 课程代码如下

function getSemverVersion(baseVersion,versions){

return versions

.filter(version =>semver.satisfies(version, `^${baseVersion}`))

.sort((a,b) => semver.gt(b,a))

}

# 举例

如果 baseVersion = 1.0.0

   versions =['2.1.2', '1.1.1', '1.0.3', '3.1.2',  '1.0.8']


执行上面代码后出现的结果为:

[ '1.1.1', '1.0.3', '1.0.8' ]



错误一:2.1.2 与3.1.2 两个版本过滤掉了,经过代码分析,以上代码semver.satisfies(version, `^${baseVersion}`,应该改为

semver.satisfies(version, `> ${baseVersion}`


 错误二:版本无论如何打乱都不会进行排序,这里的sort没有任何作用,尝试了几下仍然未找到解决办法



正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
扬_灵 2020-12-25 09:59:28

同学你好,你说的第一个问题已经和sam老师沟通过了,稍后会进行修复,关于第二个问题可以你可以参考一下下面的函数,对版本数组进行处理返回最后的版本,

function SemverSort(versionArray,baseVersion){
let lastVersion = baseVersion
versionArray.map(value => {
if(semver.gt(value,lastVersion)){
lastVersion = value
}
})
return lastVersion
}


  • 提问者 liugezhou #1

    看到sam老师的修复了:

     function getSemverVersions(baseVersion, versions) {

    return versions

    .filter(version => semver.satisfies(version, `>${baseVersion}`))

    .sort((a, b) => semver.gt(b, a) ? 1 : -1);

    }
    2021-01-05 21:35:51
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师