JavaScript сортировка: Collator - исправление для aa (å) - PullRequest
2 голосов
/ 12 февраля 2020

Я пытаюсь сделать систему сортировки. Проблема, с которой я сталкиваюсь, заключается в том, что «аа» стоит последним, потому что в Дани sh «аа» означает «а», и именно поэтому оно является последним. Если возможно, я хочу, чтобы 'aa' было первым, а не последним в списке.

Итак, чтобы упростить, это вывод, который он мне дает:

data
æ
ø
å
aa

... и порядок, который я хочу:

aa
data
æ
ø
å

Вот код, над которым я работаю

var list = ["data", "aa", "å", "æ", "ø"];
const collator = new Intl.Collator("da", { caseFirst: "lower" });

document.write(list.sort(collator.compare));

РЕДАКТИРОВАТЬ: При переключении на Icelandi c вместо Dani sh, кажется, работает на телефонах, но не на компьютерах.

EDIT2: на компьютерах кажется, что Google Chrome и Microsoft Edge (Chromium) в настоящее время не работают, однако работают Microsoft Edge (Edge HTML), Mozilla Firefox и Safari. Inte rnet Explorer просто становится странным.

var list = ["data", "aa", "å", "æ", "ø"];
const collator = new Intl.Collator("is", { caseFirst: "lower" });

document.write(list.sort(collator.compare));

1 Ответ

0 голосов
/ 12 февраля 2020

Чтобы сделать то, что вы ищете, я полагаю, вам нужно реализовать собственный сортировщик:

list = [ 'data', 'æ', 'ø', 'å', 'aa' ]
desiredOrder = [ 'aa', 'data', 'æ', 'ø', 'å' ]

sorter = (e1, e2) => {

    if(desiredOrder.indexOf(e1) < desiredOrder.indexOf(e2)){
        return -1
    }
    if(desiredOrder.indexOf(e1) > desiredOrder.indexOf(e2)){
        return 1
    }

    return 0

}

console.log(list.sort(sorter))
...