在项目中需要给grid的某一列排序,但又不是miniui那样的人为的操作,本来是想用冒泡来排下序就行了,结果发现事情没有这么简单,当然也没有那么复杂,之前转的一篇文章中,介绍了很多js数组的方法,今天就用到了sort()方法。
sort()方法会改变原来的数组,并且sort方法并不是严格按照数字大小排序的,好像是根据字符的阿斯科码表对应值排序的。如果想对数组按照大小进行排序,则需要在sort()方法添加比较函数。
下面的代码转载于一个女生的博客园,地址是:https://www.cnblogs.com/yuwenjing0727/p/6856991.html
var arr = [
{name:'zopp',age:0},
{name:'gpp',age:18},
{name:'yjj',age:8}
];
function compare(property){
return function(a,b){
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
}
}
console.log(arr.sort(compare('age')))
如何根据参数不同,来确定是升序排列,还是降序排序呢?
/**数组根据数组对象中的某个属性值进行排序的方法
* 使用例子:newArray.sort(sortBy('number',false)) //表示根据number属性降序排列;若第二个参数不传递,默认表示升序排序
* @param attr 排序的属性 如number属性
* @param rev true表示升序排列,false降序排序
* */
sortBy: function(attr,rev){
//第二个参数没有传递 默认升序排列
if(rev == undefined){
rev = 1;
}else{
rev = (rev) ? 1 : -1;
}
return function(a,b){
a = a[attr];
b = b[attr];
if(a < b){
return rev * -1;
}
if(a > b){
return rev * 1;
}
return 0;
}