在java中我们可以使用Comparable接口(interface)来按字段对对象进行排序。就像下面的例子一样,我们根据数量对水果进行排序
public class Fruit implements Comparable<Fruit>{
private String fruitName;
private String fruitDesc;
private int quantity;
public Fruit(String fruitName, String fruitDesc, int quantity) {
this.fruitName = fruitName;
this.fruitDesc = fruitDesc;
this.quantity = quantity;
}
public String getFruitName() {
return fruitName;
}
public void setFruitName(String fruitName) {
this.fruitName = fruitName;
}
public String getFruitDesc() {
return fruitDesc;
}
public void setFruitDesc(String fruitDesc) {
this.fruitDesc = fruitDesc;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public int compareTo(Fruit compareFruit) {
int compareQuantity = ((Fruit) compareFruit).getQuantity();
return this.quantity - compareQuantity;
}
}
我想知道是否有任何方法可以在 Angular(Typescript) 中实现这种实现?
export class Fruit {
fruitName: string;
fruitDesc: string;
quantity: number;
constructor() {}
}
最佳答案
操作与java类似,但不需要使用接口(interface)。如果您希望水果具有可比性,请实现该方法。从结构上讲,编译器不会进行检查,但在运行时它将起作用:
compareTo(compareFruit: Fruit): int {
return this.quantity - compareFruit.quantity;
}
但是它的发生与 Java 中一样。要在 Java 中对数组进行排序,您可以使用集合的排序方法,并且可以传递比较器。在 typescript 中排序元素的方式是相同的。调用集合的排序方法,并将比较器方法作为参数传递。这是一个例子:
let fruits = [];
fruits.push(new Fruit(...));
fruits.push(new Fruit(...));
fruits.push(new Fruit(...));
fruits.push(new Fruit(...));
fruits.sort((fruitA, fruitB) => fruitB.quantity - fruitA.quantity);
关于java - Angular : How to sort List of Objects by property?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56114683/