已知var json = [
{
lx: '水果',
dw: 'a',
mc: '苹果'
},
{
lx: '蔬菜',
dw: 'c',
mc: '豌豆'
},
{
lx: '水果',
dw: 'b',
mc: '香蕉'
},
{
lx: '水果',
dw: 'a',
mc: '西瓜'
}
];
需要得到var jsonEND = [
{
lx: '水果',
dw: ['a', 'b'],
mc: [['苹果', '西瓜'], ['香蕉']]
},
{
lx: '蔬菜',
dw: ['c'],
mc: [['豌豆']]
}
];有点类似sql中的 group by lx, dw求助高手。
{
lx: '水果',
dw: 'a',
mc: '苹果'
},
{
lx: '蔬菜',
dw: 'c',
mc: '豌豆'
},
{
lx: '水果',
dw: 'b',
mc: '香蕉'
},
{
lx: '水果',
dw: 'a',
mc: '西瓜'
}
];
需要得到var jsonEND = [
{
lx: '水果',
dw: ['a', 'b'],
mc: [['苹果', '西瓜'], ['香蕉']]
},
{
lx: '蔬菜',
dw: ['c'],
mc: [['豌豆']]
}
];有点类似sql中的 group by lx, dw求助高手。
解决方案 »
- 单击网页元素,得到它的ID并显示出来,怎样实现?
- 怎么控制类似人人网的弹出图层,弹出在当前屏幕的中央?
- ××××××××××××××高分求一正则表达式××××××××××××
- javaScript 操作 excel 为什么要让客户端把本站点添加到可信任站点才能执行
- JavaScript 读取 页面 TextBox 问题
- 求教,如何遍历当天前一个月的所有日期时间戳
- javascript能否调用数据库?菜鸟求救!!!
- 请问刷新页面的语句
- escape(string)是可以转换成16进制,但在JSP 里用URLDecoder.decode(string)...?
- 请教各位高手,javascript怎么在本地写文本?
- js读取本地文件
- 求取得相类似的数据有多少条。
var result=new Array();//这个数组保存结果
for(var i=0;i<json.length;i++)
{
var aobj=json[i];
var lxMask=false;
for(var j=0;j<result.length;j++)
{
var aresult=result[j];
if(aobj.lx===aresult.lx)
{
lxMask=true;
var dwMask=false;
for(var k=0;k<aresult.dw.length;k++)
{
if(aobj.dw===aresult.dw[k])
{
aresult.mc[k].push(aobj.mc);
dwMask=true;
break;
}
}
if(!dwMask)
{
aresult.dw.push(aobj.dw);
aresult.mc.push([aobj.mc]);
}
}
}
if(!lxMask)
{
var newobj={lx:aobj.lx,dw:[aobj.dw],mc:[[aobj.mc]]};
result.push(newobj);
}
}
{
if(i==0)
{
jsonEND[0] = json[0];
jsonEND[0].dw = [jsonEND[0].dw];
jsonEND[0].mc = [jsonEND[0].mc];
}
else
{
var len = jsonEND.length;
b:for(var k=0; k<len; k++)
{
if(jsonEND[k].lx == json[i].lx)
{
if(jsonEND[k].dw.indexOf(json[i].dw) < 0)
{
jsonEND[k].dw.push(json[i].dw)
}
if(jsonEND[k].mc.indexOf(json[i].mc) < 0)
{
jsonEND[k].mc.push(json[i].mc)
}
break b;
}
else
{
jsonEND.push(json[i]);
var _k = k+1;
jsonEND[_k].dw = [jsonEND[_k].dw];
jsonEND[_k].mc = [jsonEND[_k].mc];
}
}
}
}
没怎么测试,你看看
if(jsonEND[k].dw.toString().indexOf(json[i].dw.toString()) < 0)
{
jsonEND[k].dw.push(json[i].dw)
}
if(jsonEND[k].mc.toString().indexOf(json[i].mc.toString()) < 0)
{
jsonEND[k].mc.push(json[i].mc)
}
只是我变量名用的result而不是jsonEND罢了,
但代码是正确的,
本来因为这种问了问题又不理会别人回答的态度让人不太高兴,我不想说,反正是你的问题不是我的,
但好歹也是费了我一点心思,也不想浪费,
你测试下吧
alert(result[0].mc[0][1])---西瓜
alert(result[0].dw)---a
alert(result[0].mc[1][0])---香蕉
http://jsbin.com/oxihot/1/edit