首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TypeScript对数组进行排序

TypeScript对数组进行排序
EN

Stack Overflow用户
提问于 2014-02-11 05:06:29
回答 8查看 380K关注 0票数 196

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

因此,如果您尝试如下所示的简单操作:

代码语言:javascript
复制
var numericArray:Array<number> = [2,3,4,1,5,8,11];

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

TryIt

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

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-02-11 05:08:21

这个错误是完全正确的。

正如它试图告诉您的那样,.sort()接受返回数字的函数,而不是返回布尔值的函数。

如果第一项较小,则需要返回负数;如果第一项较大,则返回正数;如果它们相等,则返回零。

票数 203
EN

Stack Overflow用户

发布于 2014-02-11 06:31:29

数字

在对数字进行排序时,可以使用紧凑比较:

代码语言:javascript
复制
var numericArray: number[] = [2, 3, 4, 1, 5, 8, 11];

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

-而不是<

其他类型

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

代码语言:javascript
复制
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;
});

对象

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

代码语言:javascript
复制
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;
});
票数 299
EN

Stack Overflow用户

发布于 2016-09-10 14:56:37

答案很好,Sohnee。我想补充的是,如果你有一个对象数组,并且你想要按键排序,那么它几乎是相同的,这是一个既可以按日期(数字)排序,也可以按标题(字符串)排序的示例:

代码语言:javascript
复制
    if (sortBy === 'date') {
        return n1.date - n2.date
    } else {
        if (n1.title > n2.title) {
           return 1;
        }
        if (n1.title < n2.title) {
            return -1;
        }
        return 0;
    }

如果它更具动态性,也可以让里面的值作为变量n1field和n2field,只要保持字符串和数字之间的差异即可。

票数 27
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21687907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档