📌  相关文章
📜  javascript对多个字段的对象数组进行排序 - Javascript(1)

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

JavaScript 对多个字段的对象数组进行排序

在 JavaScript 中,我们可以使用 Array.prototype.sort() 方法来对数组进行排序。但是,当我们要对包含多个字段的对象数组进行排序时,就需要使用一些技巧了。

操作步骤

假设我们有以下的对象数组:

let arr = [
  { name: 'John', age: 25, gender: 'male' },
  { name: 'Mary', age: 20, gender: 'female' },
  { name: 'Peter', age: 30, gender: 'male' },
  { name: 'Alice', age: 20, gender: 'female' },
];

如果我们要按照年龄和性别来对这个数组进行排序,我们可以使用如下代码:

arr.sort((a, b) => {
  return a.age - b.age || a.gender.localeCompare(b.gender);
});

代码解析:

  • a.age - b.age 表示按照年龄从小到大排序;
  • a.gender.localeCompare(b.gender) 表示按照性别(按字母表顺序)从小到大排序;
  • || 表示如果两个对象的年龄相等,则比较性别。
示例

运行以下代码,可以看到排序后的结果:

let arr = [
  { name: 'John', age: 25, gender: 'male' },
  { name: 'Mary', age: 20, gender: 'female' },
  { name: 'Peter', age: 30, gender: 'male' },
  { name: 'Alice', age: 20, gender: 'female' },
];

arr.sort((a, b) => {
  return a.age - b.age || a.gender.localeCompare(b.gender);
});

console.log(arr);

输出结果:

[
  { name: 'Mary', age: 20, gender: 'female' },
  { name: 'Alice', age: 20, gender: 'female' },
  { name: 'John', age: 25, gender: 'male' },
  { name: 'Peter', age: 30, gender: 'male' }
]
总结

使用 Array.prototype.sort() 方法对多个字段的对象数组进行排序的方法可以总结为:

  • 使用 sort() 方法,传入一个回调函数;
  • 在回调函数中,按照需要的字段进行比较;
  • 如果第一个字段比较相同,则依次比较后续字段,直到比较出不同为止。