示例 1:按属性名称对数组进行排序
// program to sort array by property name
function compareName(a, b) {
// converting to uppercase to have case-insensitive comparison
const name1 = a.name.toUpperCase();
const name2 = b.name.toUpperCase();
let comparison = 0;
if (name1 > name2) {
comparison = 1;
} else if (name1 < name2) {
comparison = -1;
}
return comparison;
}
const students = [{name: 'Sara', age:24},{name: 'John', age:24}, {name: 'Jack', age:25}];
console.log(students.sort(compareName));
输出
[{name: "Jack", age: 25}, {name: "John", age: 24}, {name: "Sara", age: 24}]
在上面的程序中,sort()
方法用于按其对象元素的 name 属性对数组进行排序。
sort()
方法根据自定义排序函数(在此例中为 compareName)的返回值对其元素进行排序。
这里,
- 使用 toUpperCase() 方法将属性名转换为大写。
- 如果比较两个名称的结果为1,则更改它们的顺序。
- 如果比较两个名称的结果为-1 或 0,则保持它们的顺序不变。
示例 2:按年龄属性对数组进行排序
// program to sort array by property name
function compareAge(a, b) {
return a.age - b.age;
}
const students = [{name: 'Sara', age:24},{name: 'John', age:22}, {name: 'Jack', age:27}];
console.log(students.sort(compareAge));
输出
[{name: "John", age: 22}, {name: "Sara", age: 24}, {name: "Jack", age: 27}]
在上面的程序中,sort()
方法用于按 age 属性对数组元素进行排序。
要比较两个对象的 age 属性,我们可以直接相减。
- 如果它们的差值为负数,则更改它们的顺序。
- 如果它们的差值为正数,则保持它们的顺序不变。
另请阅读