微信小程序页面迁移校验之前 P5任务处理之前

This commit is contained in:
Neo
2026-03-09 01:19:21 +08:00
parent 263bf96035
commit 6e20987d2f
1112 changed files with 153824 additions and 219694 deletions

View File

@@ -0,0 +1,52 @@
/**
* 排序工具函数
* 纯函数,无 wx.* 依赖,可在 Node.js 测试环境中使用
*/
/**
* 按时间戳字段降序排序(最新在前)
* @param list 带时间戳字段的对象数组
* @param field 时间戳字段名,默认 'timestamp'
* @returns 排序后的新数组(不修改原数组)
*/
export function sortByTimestamp<T extends Record<string, any>>(
list: T[],
field: string = 'timestamp'
): T[] {
return [...list].sort((a, b) => {
const ta = new Date(a[field]).getTime()
const tb = new Date(b[field]).getTime()
// NaN 排到末尾
if (isNaN(ta) && isNaN(tb)) return 0
if (isNaN(ta)) return 1
if (isNaN(tb)) return -1
return tb - ta
})
}
/**
* 按指定字段排序
* @param list 对象数组
* @param field 排序字段名
* @param order 排序方向,'asc' 升序 / 'desc' 降序(默认 'desc'
* @returns 排序后的新数组
*/
export function sortByField<T extends Record<string, any>>(
list: T[],
field: string,
order: 'asc' | 'desc' = 'desc'
): T[] {
return [...list].sort((a, b) => {
const va = a[field]
const vb = b[field]
let cmp: number
if (typeof va === 'number' && typeof vb === 'number') {
cmp = va - vb
} else {
cmp = String(va ?? '').localeCompare(String(vb ?? ''))
}
return order === 'asc' ? cmp : -cmp
})
}