您好,欢迎访问一九零五行业门户网

js实现json数据行到列的转换的实例代码_javascript技巧

月份 郑州-电量 新乡-电量 安阳-电量
201201 33 29 23
201202 35 26 25
201203 34 27 24
201204 36 28 26
201205 34.3 28.8 24.3
这样,ext的图表就能把它显示成三个序列了。
我写了如下的函数实现这个功能:
复制代码 代码如下:
function covertdata(jsondata,idfield, fromfield, tofield){
var result = [], currecord =null, num;
var fromfields = fromfield.split(',');
// 循环整个数组:[{...},{...},{...},...]
for(var idx=0;idxnum = findidx(result, idfield, jsondata[idx][idfield]);
if(num!=-1){
currecord = result[num];
}
else{
currecord = {};
};
// 循环每个json对象中的字段
for(var key in jsondata[idx]){
// 处理转换的数据内容
for(var i=0;iif(key == fromfields[i]){
currecord[jsondata[idx][tofield]+'-' + fromfields[i]] = jsondata[idx][key];
break;
}
}
// 除数据内容外,只处理标识字段数据
if(key == idfield){
currecord[key] = jsondata[idx][key];
}
}
if(num==-1){
result.push(currecord);
}
}
return result;
} function findidx(jsondata, columnname, value){
for(var idx = 0;idxif(jsondata[idx][columnname]==value)
return idx;
}
return -1;
}
jstestdriver的测试代码如下:
testcase(test json data row to column,{
setup:function(){
this.jsondata = [{yearmonth:201201,ppq:23,spq:27,company:'dfsoft'},
{yearmonth:201202,ppq:33,spq:38,company:'dfsoft'},
{yearmonth:201203,ppq:43,spq:49,company:'dfsoft'},
{yearmonth:201204,ppq:53,spq:51,company:'dfsoft'},
{yearmonth:201201,ppq:29,spq:26,company:'vcom'},
{yearmonth:201202,ppq:34,spq:38,company:'vcom'},
{yearmonth:201203,ppq:48,spq:43,company:'vcom'},
{yearmonth:201204,ppq:52,spq:59,company:'vcom'}];
var fromfield = 'ppq,spq', tofield = 'company', idfield = 'yearmonth';
this.resultdata = covertdata(this.jsondata,idfield,fromfield, tofield);
},
test store has columns:function(){
var month1 = this.resultdata[findidx(this.resultdata,'yearmonth',201201)];
var month2 = this.resultdata[findidx(this.resultdata,'yearmonth',201202)];
var month3 = this.resultdata[findidx(this.resultdata,'yearmonth',201203)];
var month4 = this.resultdata[findidx(this.resultdata,'yearmonth',201204)];
assertequals(4,this.resultdata.length);
assertequals('23',month1['dfsoft-ppq']);
assertequals('29',month1['vcom-ppq']);
assertequals('33',month2['dfsoft-ppq']);
assertequals('34',month2['vcom-ppq']);
assertequals('43',month3['dfsoft-ppq']);
assertequals('48',month3['vcom-ppq']);
assertequals('53',month4['dfsoft-ppq']);
assertequals('52',month4['vcom-ppq']);
assertequals('27',month1['dfsoft-spq']);
assertequals('26',month1['vcom-spq']);
assertequals('38',month2['dfsoft-spq']);
assertequals('38',month2['vcom-spq']);
assertequals('49',month3['dfsoft-spq']);
assertequals('43',month3['vcom-spq']);
assertequals('51',month4['dfsoft-spq']);
assertequals('59',month4['vcom-spq']);
}
})
测试通过,表示转换成功。
其它类似信息

推荐信息