目录
reverse()和 sort()。
1.reserve方法
reverse()方法就是将数组元素反向排列。
let arr = [1, 2, 3, 4, 5]
console.log(arr.reverse());// [5, 4, 3, 2, 1]
但是这样只能将其反转,不灵活
所以我们采取sort方法
2.sort方法
排序的原理
(1) 默认情况下,sort()会按照升序重新排列数组元素,即最小的值在前面,最大的值在后面
(2)为此,sort()会在每一项上调用 String()转型函数,然后比较字符串来决定顺序。即使数组的元素都是数值,也会先把数组转换为字符串再比较、排序
(3)参数:用来指定按某种顺序进行排列的函数。如果省略,元素按照转换后的字符串的各字符的Unicode位点进行排序。
let values = [0, 1, 5, 10, 15];
values.sort();
console.log(values);// 0,1,10,15,5
因为数组中的每一项都调用了String方法,然后在比较排序,"10"在"5"的前面
为了解决这个问题,我们可以传递一个比较函数compare
如果指明了比较函数,那么数组按照调用该函数的返回值进行排序。
如果compareFunction(a,b)小于0,那么a排b前面
如果compareFunction(a,b)大于0,那么a排b后面
如果compareFunction(a,b)等于0,那么a,b的相对位置不变
升序排序
function compare(value1, value2) {
if (value1 > value2) return 1;
if (value1 == value2) return 0;
// 如果第一个参数应该排在第二个参数前面,就返回复负值
// 也就是第一个参数比第二个参数小
if (value1 < value2) return -1;
}
降序排序
function compare2(value1, value2) {
if (value1 > value2) return -1;
if (value1 == value2) return 0;
if (value1 < value2) return 1;
}
console.log(values.sort(compare));//[0, 1, 5, 10, 15]
使用箭头函数来进行排序
// 当然我们可以使用箭头函数来排序
console.log(values.sort((a, b) => a > b ? 1 : a < b ? -1 : 0));
//[0, 1, 5, 10, 15]
当然可以直接时候相减的方式
// 我们还可以使用省略方法排序
// 升序排序
function compare3(value1, value2) {
return value1 - value2
}
// 降序排序
function compare4(value1, value2) {
return value2 - value1
}