gpt4 book ai didi

javascript - 如何对特殊字母( typescript )进行排序?

转载 作者:搜寻专家 更新时间:2023-10-30 21:12:10 27 4
gpt4 key购买 nike

我想在 ts...sort 方法和 localCompare() 中对一些字母进行排序 Ä, Å, Ö,而不是 Å, Ä, Ö。如何正确地对任何字母进行排序?

我有一个对象列表:

class MyObj { id:number,
name: string,
type:number
}

I tried var list: MyObj[] = a list of objects

list.sort(function (a, b) {
return a.name.toUpperCase().localeCompare(b.name.toUpperCase());
});

更新

是的,georg 回答是正确的:我也发现了这个:

var strings = ["Ålex", "Ålex3", "Älex2"];
var sorter = new Intl.Collator("sv", { usage: "sort" });

strings.sort(sorter.compare);

相同的结果。

非常感谢!

非常重要

不要使用 localCompare,因为它在执行时非常糟糕。

使用 Intl.Collat​​or!

var browserLanguage = function () {
const defaultLanguage = "en";
const browserLanguage = this.window.navigator.language ||
(this.window as any).navigator.browserLanguage;

const currentLanguage = browserLanguage.split('-')[0];

if (supportedLanguages.indexOf(currentLanguage) < 0) {
return defaultLanguage;

} else {
return currentLanguage;
}
}

const intlCollator = new Intl.Collator(browserLanguage, { usage: "sort" });

list.sort(function (a, b) {
return intlCollator.compare(a.toUpperCase(), b.toUpperCase());
});

最佳答案

localeCompare 显然取决于语言环境,不同的语言环境使用不同的规则(“排序规则”)来比较扩展字符。例如,在英语中,不同变音符号的A都是一样的,而瑞典语则区别对待:

console.log(["Älex2", "Ålex0", "Ålex3", "Alex1"].sort(( a, b ) => a.localeCompare(b, 'en')));

console.log(["Älex2", "Ålex0", "Ålex3", "Alex1"].sort(( a, b ) => a.localeCompare(b, 'sv')));

关于javascript - 如何对特殊字母( typescript )进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48583099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com