在我的项目中,数据的排序是使用javascript完成的。但我们遇到了一个问题,其中带有连字符( - )的字符串在浏览器(主要是IE,Chrome,Firefox)中的排序不一致。我们使用Intl.Collator作为比较器,但发现比较器在浏览器时有不同的行为标点符号和符号,主要是连字符( - )。
这是一个示例代码
window.strings = ko.observableArray([ "con", "coop", "co-op", "co&op", "co!op"]);
var Collator = new Intl.Collator("en-u-kn");
strings.sort(Collator.compare);
ko.applyBindings();
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<ul data-bind="foreach:strings">
<li data-bind="text:$data"></li>
</ul>
在chrome中,它首先使用符号放置字符串。在IE11中,它将“co-op”放在“coop”之后。
Intl.Collator中是否有语言环境或选项,以便符号/标点符号在浏览器之间一致排序?