Menu
CoddyTech

Sort 方法

本课属于 Coddy JavaScript 学习旅程的“逻辑与流程”单元。第 57 课,共 65 课。

sort() 方法可以对数组中的元素进行原地排序,并返回排序后的数组。默认情况下,它会将元素视为字符串,按字母顺序升序排列。

这是基本语法:

array.sort([compareFunction])

不使用比较函数的示例:

const fruits = ['banana', 'apple', 'orange', 'mango'];
fruits.sort();
console.log(fruits);
// ['apple', 'banana', 'mango', 'orange']

警告:如果不提供比较函数,数字的排序结果可能不符合预期:

const numbers = [1, 30, 4, 21, 100000];
numbers.sort();
console.log(numbers);
// [1, 100000, 21, 30, 4](数字排序不正确)

要正确排序数字或实现自定义排序,你需要使用比较函数。

比较函数应返回:

  • 如果 a 应排在 b 前面,则返回负值
  • 如果 b 应排在 a 前面,则返回正值
  • 如果它们相等,则返回 0

下面介绍如何使用比较函数对数字进行排序:

// 升序排列
const numbers = [1, 30, 4, 21, 100000];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 4, 21, 30, 100000]
// 降序排列
numbers.sort((a, b) => b - a);
console.log(numbers); // [100000, 30, 21, 4, 1]

对象排序的另一个示例:

const people = [
    { name: 'John', age: 30 },
    { name: 'Alice', age: 25 },
    { name: 'Bob', age: 35 }
];

// 按年龄升序排序
people.sort((a, b) => a.age - b.age);
// 按姓名排序(使用 localeCompare() 按字母顺序排列)
people.sort((a, b) => a.name.localeCompare(b.name));
challenge icon

挑战

简单

创建一个名为 sortByLength 的函数,它接收一个字符串数组,并返回一个新数组,其中包含相同的字符串,按长度升序排列。如果两个字符串长度相同,则按字母顺序排列。

亲手试试

function sortByLength(arr) {
    return arr.sort((a, b) => {
        // 在这里编写代码
    })
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: JavaScript 在线编译器