var d = []; 
d[0] = {P : "a", C : "1", Q : 2}; 
d[1] = {P : "a", C : "1", Q : 1}; 
d[2] = {P : "b", C : "1", Q : 1}; 
d[3] = {P : "a", C : "2", Q : 1}; //排序
function compare(o1, o2){
if(o1.P != o2.P) return o1.P.localeCompare(o2.P);
if(o1.P == o2.P && o1.C != o2.C) return o1.C.localeCompare(o2.C);
if(o1.P == o2.P && o1.C == o2.C) return 0;
}var dd = d.sort(compare);//比较
var n = [];(function a(){ if(d.length == 1){
n.push(d[0]);
return;
}else if(d[0].P == d[1].P && d[0].C == d[1].C){
d[1].Q += d[0].Q;
}else{
n.push(d[0]);
}

d.shift();
a();

})();
for(o in n){
var s = "";
for(oo in n[o]){
s += oo+":"+n[o][oo]+"\n";
}
alert(s);
}

解决方案 »

  1.   

    var d = []; 
    d[0] = {P : "a", C : "1", Q : 2}; 
    d[1] = {P : "a", C : "1", Q : 1}; 
    d[2] = {P : "b", C : "1", Q : 1}; 
    d[3] = {P : "a", C : "2", Q : 1}; //排序
    function compare(o1, o2){
    if(o1.P != o2.P) return o1.P.localeCompare(o2.P);
    else if(o1.C != o2.C) return o1.C.localeCompare(o2.C);
    else return 0;
    }var dd = d.sort(compare);//比较
    var n = [];for(var i = 1, len = d.length; i < len; i++){
    if(d[0].P == d[1].P && d[0].C == d[1].C){
    d[1].Q += d[0].Q;
    }else{
    n.push(d[0]);
    }
    d.shift();
    }
    n.push(d[0]);for(o in n){
    var s = "";
    for(oo in n[o]){
    s += oo+":"+n[o][oo]+"\n";
    }
    alert(s);
    }这样比较好
      

  2.   

    感谢cloudgamer出手,问题比终于搞定,不知能否留个QQ,有机会向你学习下
      

  3.   

    对了cloudgamerfor(o in n){
        for(oo in n[o]){
           这里我想这直接 alert(n[o][0]) 需要怎改?
        }
    }
      

  4.   

    var d = []; 
    d[0] = {P : "a", C : "1", Q : 2}; 
    d[1] = {P : "a", C : "1", Q : 1}; 
    d[2] = {P : "b", C : "1", Q : 1}; 
    d[3] = {P : "a", C : "2", Q : 1}; 
    d[4] = {P : "b", C : "1", Q : 1}; //排序
    function compare(o1, o2){
        if(o1.P != o2.P) return o1.P.localeCompare(o2.P);
        else if(o1.C != o2.C) return o1.C.localeCompare(o2.C);
        else return 0;
    }var n = d.sort(compare);//比较
    for(var i = n.length -1; i > 0; i--){
    if(n[i].P == n[i-1].P && n[i].C == n[i-1].C){
    n[i-1].Q += n[i].Q;
    n.splice(i,1);
        }
    }for(o in n){
        var s = "";
        for(oo in n[o]){
            s += oo+":"+n[o][oo]+"\n";
        }
        alert(s);
    }更好
      

  5.   

    前面的d应该是dd才对
    巧合对了