wzclm f401f40a6e 重构课程管理模块并更新路由选择
- 将课程管理从活动模块移至专用课程模块
- 使用新的课程管理结构更新 AdminLayout 侧边栏菜单
- 修改路由器配置以反映新的课程管理路由
- 从活动模块中删除已弃用的课程管理视图
-添加物种监测
2025-03-01 16:07:20 +08:00

52 lines
1.4 KiB
JavaScript

/**
* 对数组按照指定字段进行排序
* @param {Array} array - 要排序的数组
* @param {string} field - 排序字段
* @param {string} [order='asc'] - 排序方式:'asc' 升序,'desc' 降序
* @returns {Array} 排序后的新数组
*/
export function sortArrayByField(array, field, order = 'asc') {
if (!Array.isArray(array) || array.length === 0) {
return array;
}
const sortedArray = [...array].sort((a, b) => {
let valueA = a[field];
let valueB = b[field];
// 处理日期类型
if (field.includes('time') || field.includes('date') || field.includes('at')) {
valueA = new Date(valueA).getTime();
valueB = new Date(valueB).getTime();
}
// 处理数字类型
else if (typeof valueA === 'number' && typeof valueB === 'number') {
return order === 'asc' ? valueA - valueB : valueB - valueA;
}
// 处理字符串类型
else {
valueA = String(valueA).toLowerCase();
valueB = String(valueB).toLowerCase();
}
if (order === 'asc') {
return valueA > valueB ? 1 : -1;
} else {
return valueA < valueB ? 1 : -1;
}
});
return sortedArray;
}
/**
* 反转数组顺序
* @param {Array} array - 要反转的数组
* @returns {Array} 反转后的新数组
*/
export function reverseArray(array) {
if (!Array.isArray(array)) {
return array;
}
return [...array].reverse();
}