📅  最后修改于: 2023-12-03 15:14:00.438000             🧑  作者: Mango
在C++中,我们经常需要对对象的向量进行排序。除了传统的使用std::sort
算法进行排序之外,我们还可以使用用于对象排序的lambda函数来排序向量。在本文中,我们将学习如何按属性对对象的向量进行排序,并且我们将以 TypeScript 为示例代码。
我们将首先定义一个示例的 TypeScript 对象。假设我们正在编写一个学生信息管理系统,每个学生对象都具有name
和score
属性。我们可以定义一个Student
类型来表示学生对象的属性。
class Student {
public name: string;
public score: number;
constructor(name: string, score: number) {
this.name = name;
this.score = score;
}
}
接下来,我们将定义一组示例学生对象,并存储在students
数组中。
let students = [
new Student("Alice", 80),
new Student("Bob", 90),
new Student("Charlie", 70),
new Student("David", 60),
];
现在,我们将按学生分数对向量进行排序。我们可以使用Array.sort()
函数来排序向量,它需要一个compareFunction
函数作为参数。该函数可以接受两个对象,并返回一个数字值。如果返回值为负数,则第一个对象在排序后会出现在第二个对象之前。如果返回值为正数,则第一个对象在排序后会出现在第二个对象之后。如果两个对象应该在排序后具有相同的顺序,则返回零。
students.sort(function(a, b) {
return a.score - b.score;
});
在函数中,我们比较了每个学生对象的分数属性,从而对向量进行排序。
接下来,我们将打印排序后的向量,以确保排序正确。我们可以使用console.log()
函数来打印排序后的向量。
console.log("按分数排序后的学生列表:");
for (let s of students) {
console.log(s.name + " - " + s.score);
}
我们已经学习了如何按属性对对象的向量进行排序,并用 TypeScript 实现了我们的示例。您可以使用相同的概念来为自己的对象设计排序。这样可以更轻松地浏览和管理对象向量,从而使代码更容易理解和维护。