javascript - 如何对 AaZz 名称列表进行排序?
问题描述
我需要按字母顺序对数据列表进行排序,但在 AaZz 中,名称是否位于名称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
解决方案
有一个内置的:
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);
推荐阅读
- angular - 无法使用角度访问 api
- angular - 使用加载器时,Openlayers 不会在图层中显示功能
- c - 从 linux 内核中的 bprm_check_security 获取 argv。文档有错吗?
- javascript - 如何使用 animxyz.css 在悬停时从右侧为淡入设置动画
- javascript - Onclick 事件问题
- python - 尝试检测网站 selenium 上是否显示错误时出错
- c# - 有没有办法通过代码从 OpenFileDialog 设置文件名?
- webpack - 将 webpack 和 mocha 与 ES6 模块一起使用
- python - Python 游标通知 postgres 重置
- if-statement - pl / sql中的if else条件查询许多流程条件