📅  最后修改于: 2023-12-03 15:25:53.298000             🧑  作者: Mango
在 TypeScript 中,如何按照2个键值对对象数组进行排序呢? Array.sort()
方法可以用来排序数组,但是需要传递一个比较函数。本文将介绍如何编写一个比较函数来按照2个键值进行排序。
假设我们有如下的对象数组:
const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 20 },
{ name: 'David', age: 35 }
]
我们希望根据年龄(age)进行排序,如果年龄相同,则根据姓名(name)进行排序。
我们可以编写一个比较函数来排序数组。比较函数接收两个参数,这两个参数是要比较的两个元素:
function compare(a: any, b: any) {
// 如果年龄不同,则按照年龄升序排序
if (a.age !== b.age) {
return a.age - b.age;
}
// 如果年龄相同,则按照姓名升序排序
return a.name.localeCompare(b.name);
}
如果两个对象的年龄(age)不同,则按照年龄升序排序。如果两个对象的年龄相同,则按照姓名(name)升序排序,这是通过使用 String.localeCompare()
方法来实现的。
一旦有了比较函数,我们就可以使用它来排序数组了:
users.sort(compare);
console.log(users);
该代码将输出:
[
{ name: 'Charlie', age: 20 },
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'David', age: 35 }
]
在 TypeScript 中,我们可以使用 Array.sort()
方法来排序数组,并通过编写比较函数来自定义比较规则。这个方法可以灵活的应用于各种排序需求。在我们的例子中,我们按照年龄(age)排序,如果年龄相同,则按照姓名(name)排序。