📜  JavaScript数组sort()(1)

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

JavaScript数组sort()

在JavaScript中,sort()方法是用于对数组进行排序的函数。它可以按照数字、字符串或者自定义排序函数的方式进行排序。在本文中,我们将全方位介绍sort()方法。

基本语法
array.sort(compareFunction)

compareFunction是可选的,用于指定排序规则的函数。如果没有指定,则默认按照字符串的Unicode码值进行排序。

用法示例
数字排序
const numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers); // [1, 2, 3, 4, 5]
字符串排序
const fruits = ["apple", "banana", "cherry", "date", "elderberry"];
fruits.sort();
console.log(fruits); // ["apple", "banana", "cherry", "date", "elderberry"]

这里并没有传递compareFunction,所以默认按照字符串的Unicode码值进行排序。

自定义排序
const students = [
  { name: 'Alice', score: 80 },
  { name: 'Bob', score: 50 },
  { name: 'Charlie', score: 70 },
  { name: 'David', score: 90 },
  { name: 'Ellen', score: 60 }
];
students.sort(function(a, b) {
  return b.score - a.score;
});
console.log(students);
/*
[
  { name: 'David', score: 90 },
  { name: 'Alice', score: 80 },
  { name: 'Charlie', score: 70 },
  { name: 'Ellen', score: 60 },
  { name: 'Bob', score: 50 }
]
*/

这里传递了一个比较函数,用于按照学生分数从高到低进行排序。

注意事项
  • sort()方法是原地排序(即修改原数组),而不是创建新的已排序的数组。
  • 字符串排序不区分大小写。
  • 传递的比较函数需要注意符号,如果返回值为正,则它会将b排在a之前,如果为负,则相反。如果为0,则ab的相对顺序不变。
  • 不要对包含undefined值的数组进行排序,因为在某些浏览器中,这种情况下的排序的结果是不确定的。
  • 对大型数组进行排序可能会花费较长时间,因此可将其拆成更小的块以进行排序,在最后将这些块组合成一个已排序的数组。
总结

在本文中,我们详细介绍了如何使用sort()方法进行数字、字符串和自定义排序。此外,我们还了解到了sort()排序方法的注意事项。