我有一个班级
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,例如
答案 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;
}
});
}