在js中有两个常用的方法对数组顺序进行调整,reverse()和sort();
其中reverse()就是对数组进行反转,颠倒原来的顺序。
eg:
var nameArr = ['Tom','Jim','Ada','Leanna'];
nameArr.reverse() ==>['Leanna','Ada','Jim','Tom']
主要来说一下sort()方法;
定义:
对数组的元素进行排序.
语法:
arrayObject.sort(sortby) sortby可不选,规定数组排序规则,必须为函数。
返回值:
对数组的引用,数组只是在原数组上进行排序,不生成副本。
说明:
如果数组在调用方法的时候没有传参数,则只是按照首字母顺序对数组元素进行排序,或者更精确的说是按照字符编码顺序进行排序,可是这样一般不适用日常操作,所以要传比较函数来规定排序。
比较函数具有两个参数a、b,要比较两个值,然后返回一个说明两个值相对顺序的数字,返回数字如下:
a < b:在排序后的数组中,a应该在b之前。 ( 数组将按照升序进行排序 )
a = b:返回0
a > b:返回一个大于0的值 (数组将按照降序进行排序 )
下面来一起看几个sort()排序的例子
例一:sort() 无回调用法
console.log(numArr.sort())==>[12,224,27,33,52]
很显然这不是我们想要的结果。
例二:sort() 传参规定排序
var numArr = [12,52,33,224,27]
function numOrderAsce(a,b){
return a-b;
}
function numOrderDesc(a,b){
return b-a;
}
console.log(numArr.sort(numOrderAsce))==>[12, 27, 33, 52, 224]
console.log(numArr.sort(numOrderDesc))==>[224, 52, 33, 27, 12]
例三:sort() 对对象数组进行排序
var objarr = [
{
name:'张三',
age:10,
year:23
},
{
name:'李四',
age:8,
year:56
},
{
name:'王二',
age:52,
year:12
},
{
name:'周八',
age:52,
year:91
}
];
function objArrOrder(type1,type2){
return function(a,b){
return a[type1]-b[type1]
}
}
console.log(objarr.sort(objArrOrder('age','year')))
例四:sort() 对对象数组进行排序(多个条件)
var objarr = [
{
name:'张三',
age:10,
year:23
},
{
name:'李四',
age:8,
year:56
},
{
name:'王二',
age:52,
year:12
},
{
name:'周八',
age:52,
year:91
}
];
function objArrOrder(type1,type2){
return function(a,b){
if(a[type1]!=b[type1]){
return a[type1]-b[type1]
}else{
return b[type2]-a[type2]
}
}
}
console.log(objarr.sort(objArrOrder('age','year')))
网友评论