gongxiangp2/lib/performance-survey-image-order.ts
2026-07-13 17:59:13 +08:00

25 lines
764 B
TypeScript

const performanceSurveyImageNameCollator = new Intl.Collator('zh-CN', {
numeric: true,
sensitivity: 'base',
})
/**
* 视觉评分的多图表示同一张详情长图的连续切片。
* 按文件名做自然数字排序,并在名称相同时保留原始顺序。
*/
export function sortPerformanceSurveyImagesByName<T>(
items: T[],
getName: (item: T) => string,
): T[] {
return items
.map((item, originalIndex) => ({ item, originalIndex }))
.sort((left, right) => {
const byName = performanceSurveyImageNameCollator.compare(
String(getName(left.item) || '').trim(),
String(getName(right.item) || '').trim(),
)
return byName || left.originalIndex - right.originalIndex
})
.map(({ item }) => item)
}