如何对AaZz名称列表进行排序?

MDo*_*dis 2 javascript sorting alphabetical

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

- Abigail
- Antony
- abigail
- antony
- Zelda
- zelda
Run Code Online (Sandbox Code Playgroud)

基础的

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

正在产生这样的列表:

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

首选语言:JavaScript

Ama*_*dan 5

有一个内置的:

let list = ["abigail", "Antony", "Abigail", "antony", "Zelda", "zelda"];

list.sort((a, b) =>
  a.localeCompare(b, "en", { caseFirst: "upper" })
);

console.log(list);
Run Code Online (Sandbox Code Playgroud)

编辑:也许您想要这个?

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);
Run Code Online (Sandbox Code Playgroud)