Сортировка на основе локали в Javascript, сортировка акцентированных букв и других вариантов заранее определенным способом
По фински мы сортируемW
послеV
(как на английском) но потому чтоW
это не родное финское письмо, оно рассматривается как вариантV
который отсортирован как бы равнымV
, но в тех случаях, когда единственное различие между двумя словами заключается в том, чтоV
являетсяW
, затемV
-версия сортируется первой. Пример освещает правильный порядок:
Vatanen, Watanen, Virtanen
По финскиV
а такжеW
сопоставлены какA
а такжеÁ
. Á
сортируется какA
, но в тех случаях, когда это единственное отличие, первоочередной является безударная. То же правило для всех других акцентированных букв, ноÅ
, Ä
а такжеÖ
сопоставляются отдельно после Z.
Question: What would be the best algorithm to sort this like variants in a predefined way? (например,[Watanen, Vatanen, Virtanen]
в[Vatanen, Watanen, Virtanen]
)?
Дополнение: вопрос актуален для охвата и других вариантов в том виде, как они определены вhttp://cldr.unicode.org/index/cldr-spec/collation-guidelinesпоскольку метод с большой вероятностью будет таким же, а ответы на этот вопрос будут полезны для максимально широкой аудитории, и алгоритмы сортировки можно будет совместить с правилами сопоставления, определенными в Unicode CLDR. Unicode CLDR определяет три уровня различий между буквами: первичный уровень (базовые буквы), вторичный уровень (акцентированные буквы) и третичный уровень (регистр символов).
Я думал какой-тоarray preparation как в числовой сортировке, где мы можем заполнить все числа нулями, чтобы сделать их сопоставимыми в виде строк. Пример: массив[file1000.jpg, file3.jpg, file22.jpg]
может бытьprepared чтобы сделать его сопоставимым со строками, заполнив его нулями следующим образом:[file1000.jpg, file0003.jpg, file0022.jpg]
, Потому чтоpreparation массива, мы можем отсортировать его очень быстро используя встроенный Array.sort ().
Целевым языком является Javascript, в котором отсутствует поддержка сортировок на основе сортировки, поэтому пользовательская функция сортировки должна быть сделана самостоятельно. Алгоритм является предпочтительным, но если у вас также есть код, он стоит +1.