[
{
"name":"2015年",
"statTotal":[
{
"total":"123",
"statType":"事件等级"
},
{
"total":"456",
"statType":"行政区域"
}
]
},
{
"name":"2016年",
"statTotal":[
{
"total":"789",
"statType":"事件等级"
},
{
"total":"110",
"statType":"行政区域"
}
]
},
{
"name":"2017年",
"statTotal":[
{
"total":"128",
"statType":"事件等级"
},
{
"total":"654",
"statType":"行政区域"
}
]
}]
我在后台获取到这么一个json字符串,在前台通过js做处理,需要将他在前台解析成一个类型
下面的map集合,这里的statType的值是动态变化的:
["事件等级" : "123,789,128","行政区域":"456,110,654"]
var legend = [];//图例
var result = eval('(' + data + ')');//json字符串
var levelTotal = [];//存放事件级别统计值
var gridTotal = [];//存放区域...
var timeTotal = [];//...
var typeTotal = [];//...
var resultTotal = [];//...
var map = new Map();
for(var j = 0; j < (result[0].statTotal).length; j++){
legend.push((result[0].statTotal)[j].statType);
}
for (var i = 0; i < result.length; i++) {
for(var j = 0; j < (result[i].statTotal).length; j++){
if(result[i].statTotal[j].statType == "事件等级"){
levelTotal.push(result[i].statTotal[j].total);
}
if(result[i].statTotal[j].statType == "行政区域"){
gridTotal.push(result[i].statTotal[j].total);
}
if(result[i].statTotal[j].statType == "事件类型"){
typeTotal.push(result[i].statTotal[j].total);
}
if(result[i].statTotal[j].statType == "事件后果"){
resultTotal.push(result[i].statTotal[j].total);
}
if(result[i].statTotal[j].statType == "时间"){
timeTotal.push(result[i].statTotal[j].total);
}
}
}
//构建map键值对
for(var i = 0 ; i<legend.length ; i++){
if(legend[i] == "事件等级"){
map.set(legend[i],levelTotal);
}
if(legend[i] == "行政区域"){
map.set(legend[i],gridTotal);
}
if(legend[i] == "事件类型"){
map.set(legend[i],typeTotal);
}
if(legend[i] == "事件后果"){
map.set(legend[i],resultTotal);
}
if(legend[i] == "时间"){
map.set(legend[i],timeTotal);
}
}
我自己的写法不正确,因为statType的值是动态变化的,而我自己的是写死的,然后if判断,
还希望各位前辈们能指点一二,小弟在此谢过!
http://blog.csdn.net/chelen_jak/article/details/28886311 如果用键值对的话,就按照这个自己封装一个用吧