📅  最后修改于: 2023-12-03 15:31:48.238000             🧑  作者: Mango
在 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()
方法,传入一个回调函数;