const performanceSurveyImageNameCollator = new Intl.Collator('zh-CN', { numeric: true, sensitivity: 'base', }) /** * 视觉评分的多图表示同一张详情长图的连续切片。 * 按文件名做自然数字排序,并在名称相同时保留原始顺序。 */ export function sortPerformanceSurveyImagesByName( 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) }