打字稿:如何对数组进行排序,不区分大小写?

时间:2017-12-09 00:20:19

标签: arrays sorting typescript

我正在尝试对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()方法

1 个答案:

答案 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' ]