📌  相关文章
📜  对每个条件 js 进行更通用的排序 - Javascript (1)

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

对每个条件 JS 进行更通用的排序 - Javascript

在 JavaScript 中,我们经常需要进行排序操作,以便更好地处理数据。然而,如果未正确处理条件,代码可能会变得冗长,难以理解,并且难以维护。在本文中,我们将探讨一些方法,以更通用的方式对每个条件进行 JavaScript 排序。

基本排序

JavaScript 的 sort 方法可以使用默认的“字典序”方法对数组进行排序。在这种方法中,基本数据类型和字符串使用 ASCII 码进行排序,而对象和数组则无法排序。下面是一个基本排序的例子:

const arr = [5, 3, 7, 1, 8, 2, 9];

arr.sort();

console.log(arr); // [1, 2, 3, 5, 7, 8, 9]

在上面的代码中,我们使用 sort 方法对数组进行排序,由于没有传递任何参数,因此默认使用字典序对数组进行排序。结果就是按升序排列了数组。

根据数值排序

如果想按数值对数组进行排序,我们可以传递一个回调函数。

const arr = [5, 3, 7, 1, 8, 2, 9];

arr.sort((a, b) => a - b);

console.log(arr); // [1, 2, 3, 5, 7, 8, 9]

在上面的代码中,我们传递了一个回调函数,该函数接受两个参数 ab。如果返回值为负数,则 a 把它在 b 前面排列;如果返回值为正数,则相反;如果返回值为 0,则 ab 相等,顺序不变。因此,我们在这里使用 a - b,以升序排列数组。

根据对象属性排序

当我们想按对象属性对数组进行排序时,我们需要针对不同的属性编写不同的回调函数。

const arr = [
  { name: 'John', age: 30 },
  { name: 'Jane', age: 25 },
  { name: 'Bob', age: 35 },
  { name: 'Mary', age: 28 },
];

arr.sort((a, b) => a.age - b.age);

console.log(arr);
// [
//   { name: 'Jane', age: 25 },
//   { name: 'Mary', age: 28 },
//   { name: 'John', age: 30 },
//   { name: 'Bob', age: 35 }
// ]

在上面的代码中,我们使用对象的 age 属性来排序,而且编写的回调函数是 a.age - b.age,以升序排序对象。

根据多个条件排序

如果我们同时想要按照多个属性排序,我们需要使用一个比较器函数,该函数会依次比较每个属性。

const arr = [
  { name: 'John', age: 30, salary: 50000 },
  { name: 'Jane', age: 25, salary: 60000 },
  { name: 'Bob', age: 35, salary: 40000 },
  { name: 'Mary', age: 28, salary: 55000 },
];

arr.sort((a, b) => {
  if (a.age !== b.age) {
    return a.age - b.age;
  }
  if (a.salary !== b.salary) {
    return b.salary - a.salary;
  }
  return a.name.localeCompare(b.name);
});

console.log(arr);
// [
//   { name: 'Jane', age: 25, salary: 60000 },
//   { name: 'Mary', age: 28, salary: 55000 },
//   { name: 'John', age: 30, salary: 50000 },
//   { name: 'Bob', age: 35, salary: 40000 }
// ]

在上面的代码中,我们使用了一个多条件排序的例子。我们首先比较年龄,如果不同,我们就根据年龄排序。如果年龄相同,我们就比较薪水,如果不同,我们就按照薪水排序。最后,如果薪水和年龄相同,我们就按照名字的字典序比较排序。

小结

通过以上的例子,我们已经对每个条件 JS 进行更通用的排序有了更深入的理解。我们已经了解了如何根据数值、对象属性以及多个排序条件对数组进行排序。这些技巧可以帮助我们更好地理解和维护 JavaScript 代码。

本文共同探讨了以下内容:

  • 基本排序
  • 根据数值排序
  • 根据对象属性排序
  • 根据多个条件排序

希望这篇文章能够帮助你更好地理解 JS 排序!