如何按字母顺序对项目进行排序?
Posted
技术标签:
【中文标题】如何按字母顺序对项目进行排序?【英文标题】:How to sort items alphabetically? 【发布时间】:2022-01-13 13:37:05 【问题描述】:我正在尝试对下拉列表中的全名列表进行排序,例如: 列表 ==>
帕特里克·穆 法鲁埃托 Cancello Rettin 阿德里亚诺·莫林雷特在这里我想创建一个管道来订购该列表,在我的 html 部分中,我只需要在选择选项中使用管道:|按字母顺序排序 如何实施? 我为一个字母找到了这个例子:
@Pipe(name: 'AlphabeticSortPipe')
export class AlphabeticSortPipe implements PipeTransform
transform(value: any[]): any[]
value.sort(function(a, b)
const alc = a.toLowerCase();
const blc = b.toLowerCase();
return alc > blc ? 1 : alc < blc ? -1 : 0;
);
console.log(value);
return value;
但是这个管道只能用于一个字母。如何对这些名称进行排序?谢谢大家!
【问题讨论】:
表示它不仅仅用于一个字符,a 和 b 是引用作为参数传递给此管道的数组的两个值,转换为 LocaleLowerCase 后,返回字符串比较。您是否尝试验证仅适用于单个字符? 【参考方案1】:使用localeCompare()
transform(value: string[]): string[]
// Use a copy of your array if you want to keep the original untouched
return [...value].sort((a, b) =>
a = a.toLowerCase(); // or a.toLocaleLowerCase()
b = b.toLowerCase(); // or b.toLocaleLowerCase()
return a.localeCompare(b);
您可以在transform()
函数中添加一个参数来进行升序或降序排序
transform(value: string[], ascending = true): string[]
// Use a copy of your array if you want to keep the original untouched
return [...value].sort((a, b) =>
a = a.toLowerCase(); // or a.toLocaleLowerCase()
b = b.toLowerCase(); // or b.toLocaleLowerCase()
return ascending ? a.localeCompare(b) : b.localeCompare(a);
【讨论】:
我认为这个解决方案也应该有效。以上是关于如何按字母顺序对项目进行排序?的主要内容,如果未能解决你的问题,请参考以下文章