数组按属性值排序
使用 sort() 方法对对象数组按指定属性进行排序
问题
对以下数组根据 born 属性值进行降序排列:
const singers = [
{ name: 'Steven Tyler', band: 'Aerosmith', born: 1948 },
{ name: 'Karen Carpenter', band: 'The Carpenters', born: 1950 },
{ name: 'Kurt Cobain', band: 'Nirvana', born: 1967 },
{ name: 'Stevie Nicks', band: 'Fleetwood Mac', born: 1948 },
];
解答
使用 Array.prototype.sort() 方法,传入比较函数即可实现排序。该方法会原地修改数组并返回排序后的数组。
// 方法一:完整的比较函数
function compare(a, b) {
return a.born < b.born ? 1 : -1;
}
singers.sort(compare);
// 方法二:箭头函数简写(推荐)
singers.sort((a, b) => b.born - a.born);
排序后的结果:
[
{ name: 'Kurt Cobain', band: 'Nirvana', born: 1967 },
{ name: 'Karen Carpenter', band: 'The Carpenters', born: 1950 },
{ name: 'Steven Tyler', band: 'Aerosmith', born: 1948 },
{ name: 'Stevie Nicks', band: 'Fleetwood Mac', born: 1948 }
]
关键点
sort()方法会原地修改原数组,不会创建新数组- 比较函数返回负数时,
a排在b前面;返回正数时,b排在a前面 - 降序排序使用
b - a,升序排序使用a - b - 箭头函数写法更简洁,适合简单的数值比较
目录