我正在尝试对typescript中的数组进行不敏感排序。在javascript中,可以使用
完成 list.sort(function (a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
在打字稿中,排序看起来像
list.sort((a, b) => {
if (a > b) {
return 1;
}
if (a < b) {
return -1;
}
return 0;
});
从[F,E,D,c,b,a]开始,我希望得到[a,b,c,D,E,F]
javascript排序提供预期结果,但typescript排序返回[D,E,F,a,b,c]。如何使打字稿排序不区分大小写?
编辑:我不能使用javascript方法的原因是因为在typescript中a和b是boolean而没有,toLowerCase()方法答案 0 :(得分:0)
尝试此排序功能。它基本上是对你所拥有的东西的重写,但它可能会更清洁一些。它也有效。编译器想要一个类型。在这种情况下,它不关心它是string
还是any
。我已经更新了更改传入字符串的类型的答案。它适用于此数组,与any
类型一样。
function sortStrings(a: string, b: string) {
a = a.toLowerCase();
b = b.toLowerCase();
return a > b ? 1 : (a < b ? -1 : 0);
}
console.log(['F', 'E', 'D', 'c', 'b', 'a'].sort(sortStrings));
输出:
[ 'a', 'b', 'c', 'D', 'E', 'F' ]