28.数组排序

注意点:

  • 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;(a-b<0 a小于b)

  • 如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。

  • 如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前

  • sort方法排序改变的是原有数组不生成副本
    注意点: 如果元素是字符串类型, 那么比较的是字符串的Unicode编码

  • 根据字符串长短排序

    1
    2
    3
    4
    5
    6
    7

    let arr = ["1234", "21", "54321", "123", "6"];
    arr.sort(function (str1, str2) {
    // return str1.length - str2.length;
    return str2.length - str1.length;
    });
    console.log(arr);//[ '54321', '1234', '123', '21', '6' ]

  • 按年龄大小进行降序
1
2
3
4
5
6
7
8
9
10
11
let students = [
{name: "zs", age: 34},
{name: "ls", age: 18},
{name: "ww", age: 22},
{name: "mm", age: 28},
];
students.sort(function (o1, o2) {
// return o1.age - o2.age;
return o2.age - o1.age;
});
console.log(students);

结果

1
2
3
4
[ { name: 'zs', age: 34 },
{ name: 'mm', age: 28 },
{ name: 'ww', age: 22 },
{ name: 'ls', age: 18 } ]