📌  相关文章
📜  按 2 个键值对对象数组进行排序 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:25:53.298000             🧑  作者: Mango

按 2 个键值对对象数组进行排序 - TypeScript

在 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)排序。