摘要:在本教程中,您将学习如何按对象属性值的顺序排序对象数组。
介绍 Array sort() 方法
JavaScript Array 对象提供了sort()方法,允许您对数组项目进行就地排序并返回排序后的数组。
以下是sort()方法的语法
sort(comparator)在此语法中
comparator是一个可选函数,它决定数组中项目的顺序。
comparator函数接受两个参数 a 和 b,它们是要比较的数组元素。
function fn(a,b) {
// ...
}Code language: JavaScript (javascript)比较器函数应返回一个数字,该数字将决定a是否大于、小于或等于b。
- 负数指示
sort()函数将a放在b之前。 - 正数指示
sort()函数将a放在b之后。 零或NaN指示sort()函数将a和b视为相等。
sort()方法返回对同一原始数组的引用,其中项目已排序。换句话说,它修改原始数组中项目的顺序。
如果您不想返回带有排序项的原始数组的副本,可以使用toSorted()方法。
我们将向您展示如何使用sort()方法对对象数组进行排序。
按数字对对象数组进行排序
以下示例显示了如何按分数升序对employee对象的数组进行排序
let employees = [
{ name: 'John', dob: 'Dec 15, 2007', score: 80 },
{ name: 'Ana', dob: 'Jan 15, 2009', score: 75 },
{ name: 'Zion', dob: 'Feb 15, 2011', score: 90 },
];
employees.sort((a, b) => a.score - b.score);
employees.forEach((e) => {
console.log(`${e.name} ${e.score}`);
});
Code language: JavaScript (javascript)输出
Ana 75
John 80
Zion 90它是如何工作的。
首先,声明一个员工对象的数组,其中每个对象都有name、dob和score属性。
其次,使用sort()方法按分数对员工进行排序。
employees.sort((a, b) => a.score - b.score);Code language: JavaScript (javascript)sort()方法使用以下比较器函数
(a, b) => a.score - b.scoreCode language: PHP (php)在此示例中,a 和 b 都是具有 name、dob 和 score 属性的员工对象。比较器函数比较两个员工对象的 score。
按分数降序对员工进行排序
要按分数降序对员工进行排序,您需要修改比较器函数,如下所示
let employees = [
{ name: 'John', dob: 'Dec 15, 2007', score: 80 },
{ name: 'Ana', dob: 'Jan 15, 2009', score: 75 },
{ name: 'Zion', dob: 'Feb 15, 2011', score: 90 },
];
employees.sort((a, b) => b.score - a.score);
employees.forEach((e) => {
console.log(`${e.name} ${e.score}`);
});
Code language: JavaScript (javascript)输出
Zion 90
John 80
Ana 75按字符串对对象数组进行排序
以下显示了如何按字母顺序对员工姓名进行排序
let employees = [
{ name: 'John', dob: 'Dec 15, 2007', score: 80 },
{ name: 'Ana', dob: 'Jan 15, 2009', score: 75 },
{ name: 'Zion', dob: 'Feb 15, 2011', score: 90 },
];
employees.sort((a, b) => a.name.localeCompare(b.name));
employees.forEach((e) => {
console.log(`${e.name} ${e.score}`);
});Code language: JavaScript (javascript)输出
Ana
John
Zion按日期对对象数组进行排序
要按出生日期 (dob) 对员工进行排序,您需要
- 将
dob从字符串转换为Date对象。 - 按日期对员工进行排序。
以下代码说明了这个想法
let employees = [
{ name: 'John', dob: 'Dec 15, 2007', score: 80 },
{ name: 'Ana', dob: 'Jan 15, 2009', score: 75 },
{ name: 'Zion', dob: 'Feb 15, 2011', score: 90 },
];
employees.sort((a, b) => new Date(a.dob) - new Date(b.dob));
employees.forEach((e) => {
console.log(`${e.name} ${e.dob}`);
});Code language: JavaScript (javascript)输出
John - Dec 15, 2007
Ana - Jan 15, 2009
Zion - Feb 15, 2011总结
- 使用带有比较器函数的 sort 方法按指定属性值的顺序排序对象数组。
本教程是否有帮助?