sort()方法详解

由于在学Vue的过程中忘记了sort函数,重新来学习一遍

基本用法

  • sort() 方法可以接受一个可选的比较函数作为参数,用于定义排序规则。如果不提供比较函数,sort() 将默认按照字符串 Unicode 代码点的顺序进行排序。

    1
    2
    3
    4
    5
    6
    const fruits = ['apple', 'banana', 'cherry', 'date'];

    // 默认排序(按照Unicode代码点)
    fruits.sort();
    console.log(fruits); // 输出:['apple', 'banana', 'cherry', 'date']

自定义排序规则

  • 要自定义排序规则,你可以传递一个比较函数作为 sort() 的参数。比较函数接受两个参数(通常称为 ab),用于比较这两个值。如果比较函数返回一个负数,表示 a 应该排在 b 之前;如果返回一个正数,表示 b 应该排在 a 之前;如果返回 0,表示 ab 相等,它们的相对顺序不变。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    const numbers = [42, 23, 6, 8, 19];

    // 升序排序
    numbers.sort((a, b) => a - b);
    console.log(numbers); // 输出:[6, 8, 19, 23, 42]

    // 降序排序
    numbers.sort((a, b) => b - a);
    console.log(numbers); // 输出:[42, 23, 19, 8, 6]

注意事项

  • 原地修改sort() 方法会原地修改数组,而不是创建一个新的数组。如果你需要不修改原数组的排序结果,可以先复制数组。

  • 默认排序:如果不提供比较函数,sort() 会按照字符串 Unicode 代码点进行排序,这可能导致数字不按照你的预期排序。

  • 比较函数:自定义排序规则时,比较函数应该返回一个数值,而不是布尔值。如果返回布尔值,排序可能会出现意外结果。

  • 不稳定排序:JavaScript 的 sort() 方法是不稳定的,这意味着对于相等的元素,排序后它们的相对顺序可能会改变。

总之,sort() 方法是 JavaScript 数组排序的核心方法,了解如何使用比较函数可以让你更灵活地对数组进行排序。根据你的需求,你可以实现升序、降序或自定义排序规则。