将版本号从大到小排列
例如 [‘1.2.3’,‘2.2.1’,‘10.1.0’,‘9.99.9’,‘10.1.0’]
输出 [‘1.2.3’,‘2.2.1’,‘9.99.9’,‘10.1.0’,‘10.1.0’]
思路
版本号怎么比较?
版本号x.y.z,先比较x,如果x相等,再比较y,如果y也相等,最后比较z。
我的想法是将每一个元素从字符串变成按照“.”
分割的数组,形成二维数组,再用内置函数sort
去比较。
代码
// 将版本号从大到小排列
// 例如 ['1.2.3','2.2.1','10.1.0','9.99.9','10.1.0']
// 输出 ['1.2.3','2.2.1','9.99.9','10.1.0','10.1.0']
function sortVersion(array) {
for (let i = 0; i < array.length; i++) {
array[i] = array[i].split('.')
}
array.sort((a, b) => {
return a[0] - b[0] || a[1] - b[1] || a[2] - b[2] // 先比较版本号的x,如果x相等再比较y,如果x,y都相等最后比较z。
})
for (let i = 0; i < array.length; i++) {
array[i] = array[i].join()
}
console.log(array)
}
sortVersion(['1.2.3', '2.2.1', '10.1.0', '9.99.9', '10.1.0'])
sortVersion([
'1.2.3',
'2.2.1',
'10.1.0',
'9.99.9',
'10.1.0',
'3.14.15',
'3.15.12',
'3.14.16',
])