У меня проблема с localeCompare, когда сравниваются строки, содержащие специальные символы.Я заметил, что браузеры IE сортируют строки с теми символами, которые отличаются от Firefox и Chrome.
Например, вывод следующего кода:
var collator = new Intl.Collator('en-US', {
caseFirst: 'lower',
ignorePunctuation: false,
numeric: true});
var myArray = [' ','_','-',',','!','.','(',')','[',']','{','}','@','&','#','%','^','+','$'];
console.log(myArray.sort(collator.compare));
вернет
// IE
["-", " ", "!", "#", "$", "%", "&", "(", ")", ",", ".", "@", "[", "]", "^", "_", "{", "}", "+"]
// Chrome
[" ", "_", "-", ",", "!", ".", "(", ")", "[", "]", "{", "}", "@", "&", "#", "%", "^", "+", "$"]
Есть ли способ решить эту проблему и заставить оба браузера работать одинаково?
Или, может быть, есть способ передать схему упорядочения в localeCompare и определить пользовательский порядок специальных символов?