源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2021-04-27 05:46 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:js实现json数据行到列的转换的实例代码
月份 郑州-电量 新乡-电量 安阳-电量 201201 33 29 23 201202 35 26 25 201203 34 27 24 201204 36 28 26 201205 34.3 28.8 24.3 这样,Ext的图表就能把它显示成三个序列了。 我写了如下的函数实现这个功能:
[u]复制代码[/u] 代码如下:
function CovertData(jsonData,idField, fromField, toField){ var result = [], curRecord =null, num; var fromFields = fromField.split(','); // 循环整个数组:[{...},{...},{...},...] for(var idx=0;idx<jsonData.length;idx++){ num = 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;i<fromFields.length;i++){ if(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;idx<jsonData.length;idx++){ if(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']); } })
测试通过,表示转换成功。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部