三个参数,分别是排序的表格数据,排序的字段,是否升序
export default function(tableData, par1, par2){
// 定义优先级映射
const priorityMap = {
'高': 3,
'中': 2,
'低': 1,
'高風險': 4,
'中風險': 3,
'低風險': 2,
'預警風險':1,
}
return tableData.sort((a, b) => {
const valueA = a[par1];
const valueB = b[par1];
if(!valueA || !valueB){
return
}
// 判断是否为特定字符
if (priorityMap.hasOwnProperty(valueA)) {
const mappedValueA = priorityMap[valueA];
const mappedValueB = priorityMap[valueB];
return par2 ? mappedValueA - mappedValueB : mappedValueB - mappedValueA;
}
//全数字类型作为数字比较
if (/^\d+$/.test(valueA)) {
return par2 ? valueA - valueB : valueB - valueA;
}
// 如果值为数字,直接进行数字比较
// 对于其他类型,假设为字符串,使用字符串的 localeCompare() 方法进行比较
return par2 ? valueA.localeCompare(valueB) : valueB.localeCompare(valueA);
});
}