一、Array.sort()
的基本使用
JavaScript中的数组拥有一个sort()
方法,可以对数组进行排序。可以使用默认的排序方式,或者自己指定比较函数来进行排序。
- 默认排序方式
数组中所有元素将被转换为字符串,然后比较它们的UTF-16代码单元值。例如,按升序排序数组[“ banana”,“ apple”,“ lemon”]
将产生[“ apple”,“ banana”,“ lemon”]
。
示例代码:
const fruits = ["banana", "apple", "lemon"];
fruits.sort();
console.log(fruits); // ["apple", "banana", "lemon"]
- 自定义比较函数排序
自定义比较函数接收两个参数,将它们相互比较并返回一个值,指示哪个值应该出现在前面。如果第一个参数比第二个参数小,则返回负数。如果第一个参数比第二个参数大,则返回正数。否则返回0。
例如,以下比较函数将升序排列数字:
function compareNumbers(a, b) {
return a - b;
}
按字母顺序排列数组:
const fruits = ["banana", "apple", "lemon"];
fruits.sort(function(a, b) {
return a.localeCompare(b);
});
console.log(fruits); // ["apple", "banana", "lemon"]
二、Array.sort()
方法的注意点
- 比较函数的不同返回值应对应不同的结果
比较函数不能返回任意数字。它们必须遵循以下规则:
- 如果返回值小于0,则a在排序后应该在b之前;
- 如果返回值大于0,则b在排序后应该在a之前;
-
如果返回值等于0,则不必改变它们两个的顺序。
-
数组元素将被排序并更改原数组
请注意,使用sort()
方法后,原始数组的顺序会改变。
const numbers = [4, 2, 5, 1, 3];
numbers.sort();
console.log(numbers); // [1, 2, 3, 4, 5]
- 排序不支持所有数据类型
某些数据类型可能不支持sort()
排序方法,请参考相关文档或参考其他问题。
示例代码:
// 以下这个例子展示了空值和undefined在排序之前是如何被移动到数组的末尾的。
const arr = [undefined, 1, null, 0, NaN, "", false];
console.log(arr.sort()); // [ "", 0, 1, false, null, NaN, undefined ]
参考链接:
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript中数组Array.sort()排序方法详解 - Python技术站