Работая с другом, мы погрузились в сортировку, и мы хотели использовать лучшие практики Intl.Collator compare
для сортировки на основе локали.
Для всех локалей:это работает, как и ожидалось, когда символы или текст языка имеют приоритет над другими, но японский язык кажется другим.
function letterSort(lang, letters) {
letters.sort(new Intl.Collator(lang).compare);
return letters;
}
console.log('EN sort:');
console.log(letterSort('en', ['a', '手に', '大人', 'b', '学校', '#', '金魚', 'きんぎょ', 'キンギョ']));
// =>["#", "a", "b", "きんぎょ", "キンギョ", "大人", "学校", "手に", "金魚"]
console.log('ZH sort:');
console.log(letterSort('zh', ['a', '手に', '大人', 'b', '学校', '#', '金魚', 'きんぎょ', 'キンギョ']));
// => ["#", "大人", "金魚", "手に", "学校", "a", "b", "きんぎょ", "キンギョ"]
console.log('JP sort:');
console.log(letterSort('ja', ['a', '手に', '大人', 'b', '学校', '#', '金魚', 'きんぎょ', 'キンギョ']));
// => ["#", "a", "b", "きんぎょ", "キンギョ", "大人", "学校", "手に", "金魚"]
В приведенном выше фрагменте вы заметите, что для английского и китайского языков оба будут располагать по приоритетам свой собственный текст.Японский, однако, нет.
После некоторых раскопок я смог обнаружить, что есть демонстрационный проект ICU , и похоже, что аналогичное упорядочение выполнено и применяется ICU.Также кажется, что заказ на японском языке является сложной проблемой .
Мой коллега опубликовал это как вынос и статью IЧувствую, что это немного трогает
Хорошо, я думаю, что понимаю проблему лучше, в основном, в японском языке есть четыре допустимых набора символов, один из которых - римские символы, поэтому сортировка по японскому будет сортировать каждый набор символов внутри себя, а не средидруг с другом.И римские иероглифы идут первыми из четырех наборов (вызывают Unicode).
^ Это объяснение правильно?Или есть более подходящий способ упорядочить японский язык, где японские иероглифы ставятся в первую очередь (звучит так, что это плохая практика, но я удивлен, что японцы согласны иметь свой собственный язык в конце сортов).В статье также подробно рассказывается о проблеме, но я не уверен, есть ли новые найденные способы заказа японского