js中数组中的对象用属性进行排列如果属性值相同再用别的属性进行排列;如果start在 根据start基础上再用expire排序如果expire相同再用create排。
var data = [
{
start: 4,
expire: 1,
create: 1,
},
{
start: 3,
expire: 1,
create: 1,
},
{
start: 2,
expire: 1,
create: 3,
},
{
start: 2,
expire: 1,
create: 2,
},
{
start: 3,
expire: 2,
create: 1,
},
{
start: 1,
expire: 1,
create: 1,
}
];

解决方案 »

  1.   

    sort方法 里面的函数根据你条件进行返回
      

  2.   

    大概这样:
    var data=[{start:4,expire:1,create:1,},{start:3,expire:1,create:1,},{start:2,expire:1,create:3,},{start:2,expire:1,create:2,},{start:3,expire:2,create:1,},{start:1,expire:1,create:1,}];
    data.sort(function(a,b){
    result=0;
    if(a.start>b.start){
    result=1;
        }else if(a.start<b.start){
    result=-1;
        }else{
    if(a.expire>b.expire){
    result=1;
            }else if(a.expire<b.expire){
    result=-1;
            }else{
    if(a.create>b.create){
    result=1;
                }else if(a.create<b.create){
    result=-1;
                }
            }
        }
    return result;
    });
      

  3.   

    或者这样:
    var data=[{start:4,expire:1,create:1,},{start:3,expire:1,create:1,},{start:2,expire:1,create:3,},{start:2,expire:1,create:2,},{start:3,expire:2,create:1,},{start:1,expire:1,create:1,}];
    data.sort(function(a,b){
    result=0;
    var keys=['start','expire','create'];
    for(var i=0,n=keys.length;i<n;i++){
    var x = a[keys[i]]>b[keys[i]]?1:(a[keys[i]]<b[keys[i]]?-1:0);
    result += Math.pow(10,n-i)*x;
        }
    return result;
    });
      

  4.   


    优化一下,简单一点:data.sort(function(a,b){
        if(a.start!=b.start){
            return a.start - b.start;
        }
       if(a.expire!=b.expire){
                return a.expire - b.expire;
            }
      return a.create - b.create;
    });