首頁 >web前端 >js教程 >js實作json資料行到列的轉換的實例程式碼_javascript技巧

js實作json資料行到列的轉換的實例程式碼_javascript技巧

WBOY
WBOY原創
2016-05-16 17:27:241179瀏覽

月份鄭州-電量新鄉-電量安陽-電量
201201 33 29 23
201202 35 26 25
201203 34 27 24這樣,Ext的圖表就能把它顯示成三個序列了。
我寫瞭如下的函數實現這個功能:


複製程式碼 程式碼如下:
程式碼如下:

function CovertData(jsonData,idField, fromField, toField){
var result = [], curRecord =null, num;
var fromFields = fromField.split(',');
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)
if(jsonData[idx][columnName]==value)
if(jsonData[idx][columnName]==value)
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 = thismonth',201201)]; var month2 = this.resultDatafind .resultData,'yearmonth',201202)];

var month3 = this.resultData[findIdx(this.resultData,'yearmonth',201203)];
var month4 = this.resultDataf ,'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'] );

}
}) 測試通過,表示轉換成功。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn