原数据:
var list = ['GEPM01','GEWG01','GEPM02',]
希望得到的排序结果是 GEPM01,GEPM02,GEWG01 就是先按照字符串排字符或文字,然后按照数字排
解决方案:
var list = ['GEPM01','GEWG01','GEPM02',]
var list2 = []
list2 = list.sort(function(a, b) {
return a.localeCompare(b, 'zh-CN', { numeric: true })
})
console.log(list2)
localeCompare的具体用法以及参数
如果需要先排序数字,再排序字符串
var list = ['GEPM01','GEWG01','GEPM02','GEPM05','GEPM03']
var list2 = []
list2 = list.sort(function(a, b) {
var an = a.match(/\d+(.\d+)?/g)[0];
var bn = b.match(/\d+(.\d+)?/g)[0];
if(parseFloat(an) > parseFloat(bn)) {
return 1
} else if(parseFloat(an) < parseFloat(bn)){
return -1
} else {
return a.localeCompare(b)
}
})
console.log(list2)