待更新。。。
1. A-1, A-100, A-2 此类数据,排序问题
如果按照默认的排序规则,A-100 会被排在 A-2 和 A-3 前面,这与我们预想的 A-100 会在最后面的预想结果不一样
var arr = ["A-100", "A-2", "A-1", "A-3"];
arr.sort();
//["A-1", "A-100", "A-2", "A-3"]
最蠢的方法,参数前面补零
var arr = ["A-100", "A-2", "A-1", "A-3"];
function strNumSort(arr, len = 6) {
let [...arrSort] = arr;
return arrSort.sort((a, b) => {
a = addZero(a);
b = addZero(b);
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
// 数字前补零操作,凑足6位数字
function addZero(str) {
return (str.match(/(\d+|\D+)/g) || []).map((cv) => {
if(/\d+/g.test(cv)) {
zeroLen = (len - cv.length) > 0 ? (len - cv.length) : 0;
return Array(zeroLen).join("0") + cv;
} else {
return cv;
}
}).join("");
}
});
}
strNumSort(arr);
// [ 'A-1', 'A-2', 'A-3', 'A-100' ]