题目:
知识点:
正则表达式:
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
}