JS对象数组根据属性排序

在项目中需要给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;
        }

 

你可能感兴趣的:(代码片段,js数组对象属性排序)