翻译后如何对数组进行排序?



我有一个下拉列表,其中包含来自后端的国家/地区列表。我使用i18n本地化翻译它们。它们按英文字母顺序到达,下拉列表正确显示了英文国家的列表。

当我用其他语言运行平台时,它们被正确翻译,但问题是它们保持了英文排序。

有没有一种方法可以在应用i18n翻译后按字母顺序对国家列表进行排序?

谢谢:(

您可以使用排序管道:

export class SortPipe implements PipeTransform {
transform(value: any[], sortOrder: SortOrder | string = 'asc', sortKey?: string): any {
sortOrder = sortOrder && (sortOrder.toLowerCase() as any);
if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc')) return value;
let numberArray = [];
let stringArray = [];
if (!sortKey) {
numberArray = value.filter(item => typeof item === 'number').sort();
stringArray = value.filter(item => typeof item === 'string').sort();
} else {
numberArray = value.filter(item => typeof item[sortKey] === 'number').sort((a, b) => a[sortKey] - b[sortKey]);
stringArray = value
.filter(item => typeof item[sortKey] === 'string')
.sort((a, b) => {
if (a[sortKey] < b[sortKey]) return -1;
else if (a[sortKey] > b[sortKey]) return 1;
else return 0;
});
}
const sorted = numberArray.concat(stringArray);
return sortOrder === 'asc' ? sorted : sorted.reverse();
}

}

有一个Stackliz示例:角度分拣管Stackblits

最新更新