📌  相关文章
📜  在 Javascript 中对数组进行排序(1)

📅  最后修改于: 2023-12-03 15:23:10.034000             🧑  作者: Mango

在 JavaScript 中对数组进行排序

在 JavaScript 中,可以使用 Array.prototype.sort() 方法对数组进行排序。

sort() 方法的语法
array.sort([compareFunction])
  • array:需要排序的数组。
  • compareFunction(可选):用于指定排序的函数。如果省略该参数,数组将按字母顺序排序。如果指定了该参数,数组将按照该参数进行排序。
sort() 方法使用示例
默认情况下的排序

如果省略 compareFunction 参数,则 sort() 方法默认按照字母顺序进行排序。

const fruits = ['banana', 'apple', 'orange', 'grapes'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'grapes', 'orange']
按数字大小排序

如果要按数字大小对数组进行排序,可以传入一个比较函数作为 compareFunction 参数。

const nums = [10, 5, 20, 15];
nums.sort((a, b) => a - b);
console.log(nums); // [5, 10, 15, 20]
按对象属性排序

如果要按对象属性对数组进行排序,可以在比较函数中使用对象属性来进行比较。

const persons = [
  { name: 'Tom', age: 18 },
  { name: 'Jerry', age: 22 },
  { name: 'Alice', age: 20 },
];

// 按照年龄从小到大排序
persons.sort((a, b) => a.age - b.age);
console.log(persons);

// 按照姓名进行排序
persons.sort((a, b) => a.name.localeCompare(b.name));
console.log(persons);
sort() 方法的注意事项
  • sort() 方法会修改原来的数组,没有返回新的数组。
  • 如果 compareFunction 函数返回负数,则 a 会排在 b 前面,如果返回正数,则 b 会排在 a 前面,如果返回 0,则 ab 不会变换顺序。
  • 如果比较函数中的 ab 是字符串,localeCompare() 方法可以进行字母顺序比较,详见 MDN 文档:String.prototype.localeCompare()
总结

sort() 方法是 JavaScript 中对数组进行排序的常用方法,可以通过指定比较函数来实现各种类型的排序。开发者在使用 sort() 方法时要注意,该方法会修改原数组。