如何按字母顺序对项目进行排序?

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);
  

【讨论】:

我认为这个解决方案也应该有效。

以上是关于如何按字母顺序对项目进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

我如何测试使用硒在下拉菜单中按字母顺序对项目进行排序

按字母顺序对状态中的项目进行排序

如何先按搜索词排序查询结果,然后按字母顺序?

按字母顺序对 NSMutableArray 进行排序[重复]

如何按字母顺序对 DBML 对象进行排序?

如何使用 Vim 按字母顺序对 JS es6 导入进行排序