蓝桥杯国赛web-版本比较

题目:

知识点:

正则表达式:

 

 

 

 

 

 

map()

假设 version2"1.2.3"

  • version2.split('.') 会得到 ["1", "2", "3"]
  • 然后 ["1", "2", "3"].map(Number) 会将每个字符串元素转换为数字,得到 [1, 2, 3]
  • 最后,const v2 = [1, 2, 3]

map最常见的用法就是遍历一个数组,返回一个新的数组。除此之外,map还可以这样用:

(1)map(Number):将string数组转换为number数组;

(2)map(String):将number数组转成string数组

 

做题思路 :

首先先正则判断版本号字符串是否正确,不正确返回error,然后用字符串的split方法以 . 分隔成数组,再map转为数字数组,最后逐位比较数字大小。

代码:

//比较版本号大小的通用工具函数
function compareVersion(version1, version2) {
    //TODO:待补充代码
//正则匹配校验
    const reg=/^\d+\.\d+\.\d+$/
    if(!reg.test(version1)||!reg.test(version2)){
        return 'error'
    }
//逐个比较
    let v1=version1.split('.').map(Number)
    let v2=version2.split('.').map(Number)
    for (let i=0;i<3;i++){
        if(v1[i]<v2[i]) return-1
        if(v1[i]>v2[i]) return 1
    }
    return 0

}

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值