问题描述
js版本号排序,已知一个数组 [“3.1.4.512.74.1.1”, “0.2.45.4”, “0.2.23.456”, “0.3.456”, “1.0”],使其按从小到大的版本号排序
代码
let arr = ["3.1.4.512.74.1.1", "0.2.45.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.45.4', '0.3.456', '1.0', '3.1.4.512.74.1.1' ]
//加‘0.’是为将其统一转为小数,方便对比
//如果不将其变为小数,如0.2.45.4与1.0,字符串拆分再拼接后,变成02454和10,02454大于10,不符合预期。
//变为小数后,分别为0.02454和0.10,0.10大于0.02454,符合预期