咱们知道当涉及到数据结构和算法时,必然会想到或用到排序。下面咱们看一下,JS数组中提供的几种重排序方法。javascript
反转数组元素的顺序,并返回修改后的数组。java
var arr = [2,4,2,7,9,3,23,15];
arr.reverse();
console.log(arr); // [15,23,3,9,7,2,4,2]
复制代码
按照升序排列数组元素,即从小到大进行排序,并返回修改后的数组。git
注意:sort方法会调用每一个数组元素的toString()方法,而后再比较大小,最后排序。github
var arr = [2,4,2,7,9,3,23,15];
arr.sort();
console.log(arr); // [15, 2, 2, 23, 3, 4, 7, 9]
复制代码
var arr = ["c", "a", "b"];
arr.sort();
console.log(arr); // ["a", "b", "c"]
复制代码
咱们知道sort()方法能够实现升序排列,那么降序排列怎么办呢?算法
sort()方法接收一个比较函数做为参数,这样就能指定顺序。数组
接收两个参数,若是第一个参数应该位于第二个参数以前则返回一个负数,若是两个参数相等则返回0,若是第一个参数应该位于第二个参数以后则返回一个正数。数据结构
function compareUp(val1, val2) {
if(val1 < val2) {
return -1;
}else if(val1 > val2) {
return 1;
}else {
return 0;
}
}
var arr = [2,4,2,7,9,3,23,15];
arr.sort(compareUp);
console.log(arr); // [2, 2, 3, 4, 7, 9, 15, 23]
复制代码
接收两个参数,若是第一个参数应该位于第二个参数以前则返回一个正数,若是两个参数相等则返回0,若是第一个参数应该位于第二个参数以后则返回一个负数。数据结构和算法
function compareDown(val1, val2) {
if(val1 < val2) {
return 1;
}else if(val1 > val2) {
return -1;
}else {
return 0;
}
}
var arr2 = [2,4,2,7,9,3,23,15];
arr2.sort(compareDown);
console.log(arr2); // [23, 15, 9, 7, 4, 3, 2, 2]
复制代码
对于数值类型或者其valueOf()方法会返回数值类型的对象类型,能够用更简单的比较函数。只要这个函数的第二个值减去第一个值便可。函数
function commonUp2(val1, val2) {
return val1 - val2;
}
var arr3 = [2,4,2,7,9,3,23,15];
arr3.sort(commonUp2);
console.log(arr3); // [2, 2, 3, 4, 7, 9, 15, 23]
function commonDown2(val1, val2) {
return val2 - val1;
}
var arr4 = [2,4,2,7,9,3,23,15];
arr4.sort(commonDown2);
console.log(arr4); // [23, 15, 9, 7, 4, 3, 2, 2]
复制代码