- 将课程管理从活动模块移至专用课程模块 - 使用新的课程管理结构更新 AdminLayout 侧边栏菜单 - 修改路由器配置以反映新的课程管理路由 - 从活动模块中删除已弃用的课程管理视图 -添加物种监测
52 lines
1.4 KiB
JavaScript
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();
|
|
} |