国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js實現json數據行到列的轉換的實例代碼

2024-05-06 15:49:42
字體:
來源:轉載
供稿:網友
為了實現這樣的數據顯示出來三個序列,分別為鄭州、新鄉、安陽的電量,就需要自己實現對這樣數據的轉換,轉換成如下的形式:

月份 鄭州-電量 新鄉-電量 安陽-電量
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;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']);
}
})


測試通過,表示轉換成功。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 容城县| 光山县| 当涂县| 碌曲县| 滁州市| 巫山县| 岚皋县| 苍山县| 朝阳市| 三台县| 西盟| 大埔县| 濮阳县| 清丰县| 盱眙县| 营山县| 峨眉山市| 云霄县| 白城市| 扎赉特旗| 泽州县| 措勤县| 峨眉山市| 松江区| 和硕县| 潜山县| 崇阳县| 河西区| 孟州市| 壶关县| 色达县| 广南县| 五峰| 黄骅市| 承德市| 台湾省| 和平区| 龙门县| 巴楚县| 嘉兴市| 疏附县|