【JavaScript】数组方法sort(),按指定顺序排序

294 阅读1分钟
  • 数组的sort() 方法可以把数组排序,不传参数的默认按字典排序
  • sort() 方法还接受一个回调函数,按回调函数内代码逻辑排序
  • 该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。
  • 比较函数应该具有两个参数 a 和 b,
  • 若 a < b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
  • 若 a = b,则返回 0。
  • 若 a > b,则返回一个大于 0 的值。
  1. 不带任何参数情况
const a = ['a', 1, 9, 34, 'c']
a.sort()
console.log(a)

输出结果: (5) [1, 34, 9, 'a', 'c'] 2. 通过回调函数进行排序

  • 根据自身的某个值进行排序
const a = [
    {name: 'A', num: 9},
    {name: 'B', num: 1},
    {name: 'C', num: 3}
]
a.sort((start,next)=>{
    return next.num - start.num // 按照num的值进行降序排序
})
console.log(a)

输出结果: 0:{name: 'A', num: 9} 1: {name: 'C', num: 3} 2: {name: 'B', num: 1}

  • 根据自定义的顺序进行排序
const order = {
    name: 0,
    sex: 1,
    class: 2,
    number: 3,
};
const a = [
    {key: 'name', value: 'Joshua'},
    {key: 'number', value: 3},
    {key: 'class', value: 'seventeen'},
    {key: 'sex', value: 1}
]
a.sort((start,next) => {
    return order[start.key] - order[next.key];
});
console.log(a)

输出结果: 0:{key: 'name', value: 'Joshua'} 1: {key: 'sex', value: 1} 2: {key: 'class', value: 'seventeen'} 3: {key: 'number', value: 3}