25 lines
764 B
TypeScript
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)
|
|
}
|