情景一
问题:
有一组版本号为:[“1.45.0”, “1.5”, “6”, “2.3.4.5”],将其排序后得到:[ ‘1.5’, ‘1.45.0’, ‘2.3.4.5’, ‘6’ ]
代码实现:
let versions = ["1.45.0", "1.5", "6", "2.3.4.5"];
versions = versions.sort((a, b) => {
let arr1 = a.split('.');
let arr2 = b.split('.');
let i = 0;
while (true) {
let s1 = arr1[i];
let s2 = arr2[i];
i++;
if (s1 == undefined || s2 == undefined) {
return arr1.length - arr2.length;
}
if (s1 == s2) {
continue;
}
return s1 - s2;
}
})
console.log(versions); //[ '1.5', '1.45.0', '2.3.4.5', '6' ]
情景二
问题:
有一组版本号为:[“3.1.4.512”, “0.2.5.4”, “0.2.23.456”, “0.3.456”, “1.0”],将其排序后得到:[ ‘0.2.23.456’, ‘0.2.5.4’, ‘0.3.456’, ‘1.0’, ‘3.1.4.512’ ]
代码实现:
let arr = ["3.1.4.512", "0.2.5.4", "0.2.23.456", "0.3.456", "1.0"];
arr.sort((a, b) => {
return Number("0." + a.split(".").join("")) - Number("0." + b.split(".").join(""));
});
console.log(arr); //[ '0.2.23.456', '0.2.5.4', '0.3.456', '1.0', '3.1.4.512' ]