例如有这样一个数组:
let users = [
{ id: 3, name: 'John' },
{ id: 2, name: 'Alice' },
{ id: 1, name: 'Bob' }
];
想根据id从小到大排序,可以这么写:
users.sort((a, b) => a.id - b.id);
console.log(users);
// [ { id: 1, name: 'Bob' },
// { id: 2, name: 'Alice'},
// { id: 3, name: 'John' } ]
这里我们传入了一个比较函数给sort()方法。这个函数会在排序时被调用,用于比较数组的两个元素a和b。在这个例子中,我们计算a.id - b.id,意思是:- 如果a.id - b.id 为负数,意味着a的id更小,a应该排在前面
- 如果a.id - b.id 为正数,意味着b的id更小,b应该排在前面
- 如果a.id - b.id 为0,意味着id相等,不改变相对顺序所以通过这种比较,sort()可以正确根据id从小到大排序这个数组。如果想从大到小排序,只需要改为b.id - a.id即可。