【问题标题】:How to sort A-a-Z-z a list of names?如何对名称列表进行 A-a-Z-z 排序?
【发布时间】:2019-05-09 12:34:07
【问题描述】:

我需要按字母顺序对数据列表进行排序,但在 A-a-Z-z 中,名称 Antony 是否位于名称 antony 之前,Zelda 位于 zelda 之前,因此列表如下所示:

- Abigail
- Antony
- abigail
- antony
- Zelda
- zelda

基本的

list.sort(function (a, b) {
     if (a.name > b.name) return -1;
     if (a.name < b.name) return 1;
     return 0;
});

正在生成这样的列表:

  • 阿比盖尔
  • 安东尼
  • 塞尔达
  • 阿比盖尔
  • 安东尼
  • 塞尔达

首选语言:Javascript

【问题讨论】:

    标签: javascript sorting alphabetical


    【解决方案1】:

    有一个内置的:

    let list = ["abigail", "Antony", "Abigail", "antony", "Zelda", "zelda"];
    
    list.sort((a, b) =>
      a.localeCompare(b, "en", { caseFirst: "upper" })
    );
    
    console.log(list);

    编辑:也许你想要这个?

    let list = ["abigail", "Antony", "Abigail", "antony", "Zelda", "zelda"];
    
    const compareUpperFirst = (a, b) => {
      if (a === "" && bb === "") return 0;
      if (a === "") return -1;
      if (b === "") return 1;
      let aa = a.charAt(0);
      let aal = aa.toLowerCase();
      let bb = b.charAt(0);
      let bbl = bb.toLowerCase();
      if (aal < bbl) return -1;
      if (aal > bbl) return 1;
      if (aa < bb) return -1;
      if (aa > bb) return 1;
      return compareUpperFirst(a.substr(1), b.substr(1));
    };
    
    list.sort(compareUpperFirst);
    
    console.log(list);

    【讨论】:

    • 你怎么记得这样的东西。不错。
    • toLowerCase -> toLocaleLowerCase 除非你确定你没有non-English characters that could be problematic
    • @VLAZ:是的;我打算对 MIXT4PE(现已删除)的解决方案进行最小的调整,而不使用“花哨”的方法(并且 OP 的用例没有指定任何方法,所以即使我的 localeCompare 参数也不是很精确,"en" 是一个猜测- École 应该在 ecole 之前还是之后?):P
    • 使用下面的数组它不能很好地工作,有什么想法吗? ["142019-newComp", "7 stuges","A company test", "A1QA", "AERGEGHFDGEQRG", "Business for Companies","aTestComp_D_CA_1418_21", "DEMO ALPHA 2019-04-15", "ATest comp 1","a12s","abigail", "Antony", "Abigail", "antony", "Zelda", "zelda"];
    • 第二个解决方案将放置:[A1QA,a1qa, ACorp],而我正在寻找是否可以放置 [A1QA, ACorp, a1qa]
    猜你喜欢
    • 2016-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2016-02-26
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多