TypeScript 对数组进行排序

标签 typescript

我一直在尝试找出我在使用 typescript 时遇到的一个非常奇怪的问题。它将内联 bool 表达式视为第一个值的类型而不是完整的表达式。

因此,如果您尝试像下面这样简单的操作:

var numericArray:Array<number> = [2,3,4,1,5,8,11];

var sorrtedArray:Array<number> = numericArray.sort((n1,n2)=> n1 > n2);

TryIt

您的排序方法会出现错误,指出参数与调用目标的任何签名都不匹配,因为您的结果是数字而非 bool 值。我想我遗漏了一些东西,因为我很确定 n1>n2 是一个 bool 语句。

最佳答案

数字

排序数字时,可以使用紧凑比较:

var numericArray: number[] = [2, 3, 4, 1, 5, 8, 11];

var sortedArray: number[] = numericArray.sort((n1,n2) => n1 - n2);

-而不是 < .

其他类型

如果您要比较任何其他内容,则需要将比较结果转换为数字。

var stringArray: string[] = ['AB', 'Z', 'A', 'AC'];

var sortedArray: string[] = stringArray.sort((n1,n2) => {
    if (n1 > n2) {
        return 1;
    }

    if (n1 < n2) {
        return -1;
    }

    return 0;
});

对象

对于对象,您可以根据属性进行排序,请记住上述有关能够简写数字类型的信息。无论类型如何,下面的示例都有效。

var objectArray: { age: number; }[] = [{ age: 10}, { age: 1 }, {age: 5}];

var sortedArray: { age: number; }[] = objectArray.sort((n1,n2) => {
    if (n1.age > n2.age) {
        return 1;
    }

    if (n1.age < n2.age) {
        return -1;
    }

    return 0;
});

关于TypeScript 对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21687907/

相关文章:

javascript - react 路由器 6.4.3 typescript - useLocation 任何类型错误

typescript - 将泛型类型限制为 Typescript 中的几个类之一

javascript - 如何让变量采用 typescript 中的某些预定义值之一?

javascript - Sequelize : SQL injection in findOne?

typescript - TypeScript Compiler API 可以解析表达式的值吗?

javascript - React typescript 扩展容器

typescript - 如何在带有 Typescript 的 VueJs watch 中使用 Lodash debounce

javascript - angular2 - 服务值(value)不变

typescript - 如何定义字符串类型 |数字?

compiler-construction - 将许多 typescript 文件转换为 1 个 js 文件,同时还使用 commonJS 模块