sortMixArr(arr: any[], field: string, order: string) {
if (!(arr && arr.length) || !field) {
return arr
}
const nums: any[] = []
const letters: any[] = []
const others: any[] = []
// 日期类型
const checkDate = (d: any) => isNaN(d) && !isNaN(Date.parse(d))
arr.forEach(item => {
const value = item[field]
if (/^[a-zA-Z]+[\s\S]*$/.test(value)) {
// 字母校验
letters.push(item)
} else if (/^[0-9]+[\s\S]*$/.test(value) && !checkDate(value)) {
// 数字校验
nums.push(item)
} else {
others.push(item)
}
})
let result: any = []
result = result.concat(
nums.sort((a, b) => {
return a[field] - b[field]
}),
letters.sort((a, b) => {
return a[field].localeCompare(b[field], 'zh')
}),
others.sort((a, b) => {
return a[field].localeCompare(b[field], 'zh')
})
)
return order == 'asc' ? result : result.reverse()
},
注明:本文仅用于学习记录,如有侵权,请联系删除!