JS头大问题,大家出下手
JS数组原型数据
var detailInfo = new Array();
detailInfo[0] = {PrdNo : "AX", Color : "001", Spc : "1", Qty : "1", Zxno : "", PrdName : "AX_N" };
detailInfo[1] = {PrdNo : "AX", Color : "001", Spc : "1", Qty : "1", Zxno : "", PrdName : "AX_N" };
detailInfo[2] = {PrdNo : "F001", Color : "001", Spc : "1", Qty : "1", Zxno : "", PrdName : "绢丝块" };
detailInfo[3] = {PrdNo : "AX", Color : "001", Spc : "1", Qty : "1", Zxno : "", PrdName : "AX_N" };
detailInfo[4] = {PrdNo : "F001", Color : "001", Spc : "1", Qty : "1", Zxno : "", PrdName : "绢丝块" };
detailInfo[5] = {PrdNo : "AX", Color : "001", Spc : "1", Qty : "1", Zxno : "", PrdName : "AX_N" };
detailInfo[6] = {PrdNo : "AX", Color : "002", Spc : "1", Qty : "1", Zxno : "", PrdName : "AX_N" };
条件是:PrdNo、Color和Spc三者值都相同累加Qty,结果是想要变成新的数组如下
var newInfo = new Array();
newInfo[0] = {PrdNo : "AX", Color : "001", Spc : "1", Qty : "5", Zxno : "", PrdName : "AX_N" };
newInfo[1] = {PrdNo : "F001", Color : "001", Spc : "1", Qty : "2", Zxno : "", PrdName : "绢丝块" };
[解决办法]
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);}