Javascript 使用带拉脱维亚字母的Intl.Collator时出现意外输出
我需要用拉脱维亚语按键对对象数组进行排序,但使用Intl.Collator或CompareScale时,输出不正确 我的例子是:Javascript 使用带拉脱维亚字母的Intl.Collator时出现意外输出,javascript,collator,Javascript,Collator,我需要用拉脱维亚语按键对对象数组进行排序,但使用Intl.Collator或CompareScale时,输出不正确 我的例子是: function letterSort(lang, strings) { strings.sort(new Intl.Collator(lang).compare); return strings; } console.log(letterSort('lv', ['ā', 'a', 'ābols','anna'])); // expected output:
function letterSort(lang, strings) {
strings.sort(new Intl.Collator(lang).compare);
return strings;
}
console.log(letterSort('lv', ['ā', 'a', 'ābols','anna']));
// expected output: Array ["a", "anna", "ā", "ābols"]
// actual output: Array ["a", "ā", "ābols", "anna"]
有什么办法吗?
谢谢大家! Intl有时会根据浏览器或操作系统的语言环境设置表现出不同的行为,因此,虽然在设置为en US的系统上排序可能无法正常工作,但在切换到lv lv时可能无法正常工作。我无法具体谈论拉脱维亚语,但在我所知道的本地化排序规则中,变音符号仅在与同一位置具有不同标记(或根本没有标记)的同一字母进行比较时影响排序顺序。你可以这样想,就像所有的东西都是先被排序,所有的变音符号都被删除了,然后只有在没有注释的形式相同的地方,顺序才被细化。我只是在不同的语言环境中做了一些实验,总是得到相同的排序顺序,即使我使用了无效的语言环境,比如“xx”。这可能是因为您使用的JavaScript根本不支持拉脱维亚语,而是使用通用的Unicode排序。不幸的是,似乎没有一种JavaScript
Intl
方法可以告诉您实际支持哪些语言环境