js实现的实例代码,用于将JSON数据行转换为列
郑州-电力新乡-电力安阳-电力二千零一十二亿零一百三十三万二千九百二十三
二千零一十二亿零二百三十五万二千六百二十五
二千零一十二亿零三百三十四万二千七百二十四
二千零一十二亿零四百三十六万二千八百二十六
20120534.3 28.8 24.3
通过这种方式,扩展图表可以将其显示为三个序列。
我编写了以下函数来实现这个函数:
复制代码代码如下所示:
功能covertdata(JSONData,idfield,田野,就地){
var result = { },currecord = null,Num;
无功fromfields = fromfield.split(',');
循环数组:……},{…},{ },}…}
对于(var idx = 0;IDX < jsondata.length;idx + +){
Num = findidx(结果JSONData { } { idfield,IDX idfield });
如果(Num)!= 1){
currecord =结果{数量};
}
别的{
currecord = { };
};
字段中每个JSON对象的循环
对于(在JSONData { IDX } { var关键字)
数据内容处理转换
对于(var i = 0;i < fromfields.length;i++){
If (key = = fromFields{i}) {
currecord { } { } { IDX JSONData现场+ - + fromfields {我} } = { } { } JSONData IDX的关键;
打破;
}
}
除了数据内容外,只有标识字段数据
如果(关键= = idfield){
currecord {key} = JSONData { } { } IDX的关键;
}
}
如果(数字= 1){
result.push(currecord);
}
}
返回结果;
}
功能findidx(JSONData,列名,值){
对于(var idx = 0;IDX < jsondata.length;idx + +){
如果(JSONData { } { } = = IDX columnName价值)
返回结果;
}
返回- 1;
}
对于jstestdriver测试代码如下:
TestCase(测试JSON数据排列
安装程序:函数(){
this.jsondata = { {年月:201201:23:27,PPQ SPQ,公司:'dfsoft},
{年月:201202:33:38,PPQ SPQ,公司:'dfsoft},
{年月:201203:43:49,PPQ SPQ,公司:'dfsoft},
{年月:201204:53:51,PPQ SPQ,公司:'dfsoft},
{年月:201201:29:26,PPQ SPQ,公司:'vcom},
{年月:201202:34:38,PPQ SPQ,公司:'vcom},
{年月:201203:48:43,PPQ SPQ,公司:'vcom},
{年月:201204:52:59,PPQ SPQ,公司:'vcom} };
VaR方面= 'ppq,SPQ,现场=公司,idfield = 'yearmonth;
this.resultdata = covertdata(this.jsondata,idfield,田野,现场);
},
测试存储有列:函数(){()
无功month1 =这。结果数据,{ findidx(这个数据结果,'yearmonth ',201201)};
VAR次=这。结果数据,{ findidx(这个数据结果,'yearmonth ',201202)};
VaR个=这个结果数据,{ findidx(这个数据结果,'yearmonth ',201203)};
VaR月=这。结果数据,{ findidx(这个数据结果,'yearmonth ',201204)};
assertEquals(4,这个数据结果。长度);
assertEquals('23 ',month1 { 'dfsoft-ppq});
assertEquals('29 ',month1 { 'vcom-ppq});
assertEquals(攻毒,次'dfsoft-ppq{ });
assertEquals('34,次'vcom-ppq{ });
assertEquals('43'、个{ 'dfsoft-ppq});
assertEquals(损失,'vcom-ppq '个{ });
assertEquals(分53 ',一个月'dfsoft-ppq{ });
assertEquals(52,一个月'vcom-ppq{ });
assertEquals(他,month1 { 'dfsoft-spq});
assertEquals(12'26,month1 { 'vcom-spq});
assertEquals(号',' 'dfsoft-spq次{ });
assertEquals(号',' 'vcom-spq次{ });
assertEquals('49,个{ 'dfsoft-spq});
assertEquals('43'、个{ 'vcom-spq});
assertEquals(51 ',一个月'dfsoft-spq{ });
AssertEquals ('59', month4{'vcom-spq'});
}
})
测试通过,表明转换是成功的。