【发布时间】:2021-01-21 17:09:25
【问题描述】:
我正在尝试按字母顺序对字典中的匈牙利语单词进行排序。所有字母的预期顺序应该是 aábcdeéfggyhiíjklmnoóöőpqrsttyuúüűvwxyz
我尝试使用 Intl.Collator() 和 localeCompare,但预期的输出永远不会正确。
例如:
console.log(["baj", 'betűz', 'ä', "bácsi"].sort(new Intl.Collator('hu').compare));
//expected output ["ä", "baj", "bácsi", "betűz"]
我得到的是数组 ["ä", "bácsi", "baj", "betűz"]
á 在 a 之前,但应该在 a 之后
é 和 í 也发生了这种情况。
我正在尝试使用
.sort(function(a, b) {
let letterA = a.toUpperCase();
let letterB = b.toUpperCase();
if (letterA < letterB) {
return -1;
}
if (letterA > letterB) {
return 1;
}
return 0;
});
但是带有特殊符号的单词被放在数组的末尾,这不是我想要的。
关于如何解决该问题的任何建议?
【问题讨论】:
-
当然,我从那里尝试了一切,几乎所有选项和语言,但似乎没有任何工作......
-
这只是演示了整个字符串的“自然排序顺序”。一旦排序比较器命中第三个字符,它就会将
baj放在bácsi后面,因为j的代码点高于c,并且a和á具有相同的unicode base .
标签: javascript sorting compare collator