JS数组之重排序方法

JS数组之重排序方法

重排序方法

1. reserve() 反转

反转数组中元素的顺序。

2. sort() 重排序(默认升序)

sort()方法可以对数组中的每一个元素进行排序,但是问题来了,即便数组元素全部都是数值类型,此方法依然会将所有元素先转换成字符串再进行升序排序。
因此,为了解决这个问题,sort()方法允许传入一个比较函数作为参数,实现升序或者降序。

var arr = [0, 1, 5, 10, 15];
// reserve()反转、  sort()升序(小 => 大)
console.log(arr.reverse()); // 返回反转后的新数组 [15, 10, 5, 1, 0]
console.log(arr); // [15, 10, 5, 1, 0]

// sort()方法比较的始终是字符串
console.log(arr.sort()); // 返回排序后的新数组 [0, 1, 10, 15, 5]
console.log(arr); // [0, 1, 10, 15, 5]

// 为了解决使用sort()会转换成字符串后再比较的问题,sort()方法可以传入一个比较函数。
function compareMinToMax(value1, value2) { // 升序函数
    return value1 - value2;
}
arr.sort(compareMinToMax); // 传入比较函数
console.log(arr); // [0, 1, 5, 10, 15]

function compareMaxToMin(value1, value2) { // 降序函数
    return value2 - value1;
}
arr.sort(compareMaxToMin); // 传入比较函数
console.log(arr); // [15, 10, 5, 1, 0]