typeScript如何将数组排序为数组

时间:2016-06-05 20:53:39

标签: arrays sorting typescript

我有一个班级

export class TestClass {
    id: number;
    text1: string;
    test2: string;
    text3: string;

和另一个

export class testClassRow {
    editable: boolean;
    testClass : TestClass ;
}

在我的代码中,我有一个填充了一些数据的数组,因此

x:testClassRow[]; 

我想对x进行排序,排序键是text1。

我写了一个方法来进行排序,但它不起作用 这是我的方法:

    sort(key, data) {

    if (this.key === key) {
        this.direction = this.direction * -1;
    } else {
        this.direction = 1;
    }

    this.key = key;
    data.applicationLink.sort((a, b) => {
        console.log('avlu' + a[key]);
        if (a[key] === b[key]) {
            return 0;
        }
        else if (a[key] > b[key]) {
            return 1 * this.direction;
        } else {
            return -1 * this.direction;
        }
    });

键的值为text1,例如

1 个答案:

答案 0 :(得分:0)

我找到了解决方案

对sort方法的调用必须是

  this._sorter.sort(key, this.testClassRow, o => o.testClass);

排序方法是

sort(key: string, data: any[], propertyRetriever: Function) {

    if (this.key === key) {
        this.direction = this.direction * -1;
    } else {
        this.direction = 1;
    }

    this.key = key;
    data.sort((a, b) => {
        if (propertyRetriever) {
            a = propertyRetriever(a);
            b = propertyRetriever(b);
        }
        else {
            a = a;
            b = b;
        }
        if (a[key] === b[key]) {
            return 0;
        }
        else if (a[key] > b[key]) {
            return 1 * this.direction;
        } else {
            return -1 * this.direction;
        }
    });
}