【发布时间】:2018-04-27 10:20:15
【问题描述】:
我在排序用西里里卡语(带重音符号)编写的字符串数组时遇到了问题。以下解决方案在字符串开头分别对带有和不带有变音符号的字符串进行排序。
function sorting(){
let words = document.querySelectorAll(".dictionary");
let unsorted = [];
let collator = new Intl.Collator('ru', {sensitivity: 'base'});
words.forEach(s => {
unsorted.push(s.textContent);
});
unsorted.sort(collator.compare);
unsorted.forEach(s => {
document.write("<p>" + s + "</p>");
});
}
编辑
这是排序前的数组:[..., 'áвтор', ..., 'авиабилéт', ..., 'янтáрный', ..., 'Áвстрия', 'áвтор', 'автостóп'];
这是排序后的:["авиабилéт", "автостóп", ..., "янтáрный", ..., "Áвстрия", "áвтор"]
这就是我想要的['авиабилéт', 'Áвстрия', 'áвтор', 'автостóп', ..., 'янтáрный', ...];
【问题讨论】:
-
您能否提供一个包含要排序的字符串的独立示例?您还检查过
Intl.Collator.supportedLocalesOf('ru')返回的内容吗?您使用的是什么浏览器(和版本)? -
排序后的值也可以分享一下吗?
-
我添加了一个很好地说明问题的单词列表。似乎问题只涉及以变音字符开头的单词。
Intl.Collator.supportedLocalesOf('ru')返回["ru"]。我正在使用 Chrome 62。 -
@gurvinder372 这是排序后的单词列表。
标签: javascript arrays sorting dictionary diacritics