作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
function letterSort(lang, letters) {
letters.sort(new Intl.Collator(lang).compare);
return letters;
}
console.log(letterSort('zh', ['a','z','诶']));
// Actual output: ["诶", "a", "z"]
// Expected output: ["a", "z"," 诶" ]
我希望先排序英文,后排序中文 注意:中文字符也应该排序
最佳答案
您可以首先比较两个比较的字母是否来自同一范围,假设英语被限制为 Unicode 中的前 256 个字符。如果是这种情况,请使用适当的比较器函数,如果不是,请先使用英语。
function letterSort(lang, letters) {
let cmp = new Intl.Collator(lang).compare;
letters.sort((a, b) =>
(a > "\xff") - (b > "\xff") || (a > "\xff" ? cmp(a, b) : a.localeCompare(b))
);
return letters;
}
console.log(letterSort('zh', ['a','z','诶', 'A', 'Z', '诵', '@', '1']));
关于JavaScript如何将区域设置语言与英语一起排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59494537/
我是一名优秀的程序员,十分优秀!