Сортировка строк с пунктуацией с использованием Intl.Collator не совместима во всех браузерах
В моем проекте сортировка данных осуществляется с помощью 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 он ставит "кооператив" после "курятник".
Есть ли локаль или опция в Intl.Collator, чтобы символы / знаки препинания последовательно сортировались между браузерами?