2

我正在尝试制作一个分类系统。我面临的问题是“aa”排在最后,因为在丹麦语中,“aa”的意思是“å”,这就是为什么它排在最后的原因。如果可能的话,我希望 'aa' 在列表中排在第一位,而不是排在最后。

所以为了简化,这是它给我的输出:

data
æ
ø
å
aa

...我想要的顺序是:

aa
data
æ
ø
å

这是我正在处理的代码

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

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

编辑:通过切换到冰岛语而不是丹麦语,它似乎可以在手机上工作,但不能在电脑上工作。

EDIT2:在计算机上,Google Chrome 和 Microsoft Edge (Chromium) 目前似乎无法运行,但 Microsoft Edge (EdgeHTML)、Mozilla Firefox 和 Safari 正在运行。Internet Explorer 变得很奇怪。

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

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

4

1 回答 1

-1

为了做你正在寻找的东西,我相信你需要实现一个自定义排序器:

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))
于 2020-02-11T23:42:59.177 回答