最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js實現(xiàn)json數(shù)據(jù)行到列的轉(zhuǎn)換的實例代碼

 更新時間:2013年08月01日 16:15:03   作者:  
為了實現(xiàn)這樣的數(shù)據(jù)顯示出來三個序列,分別為鄭州、新鄉(xiāng)、安陽的電量,就需要自己實現(xiàn)對這樣數(shù)據(jù)的轉(zhuǎn)換,轉(zhuǎn)換成如下的形式:

月份 鄭州-電量 新鄉(xiāng)-電量 安陽-電量
201201 33 29 23
201202 35 26 25
201203 34 27 24
201204 36 28 26
201205 34.3 28.8 24.3
這樣,Ext的圖表就能把它顯示成三個序列了。
我寫了如下的函數(shù)實現(xiàn)這個功能:

復(fù)制代碼 代碼如下:

function CovertData(jsonData,idField, fromField, toField){
var result = [], curRecord =null, num;
var fromFields = fromField.split(',');
// 循環(huán)整個數(shù)組:[{...},{...},{...},...]
for(var idx=0;idx<jsonData.length;idx++){
num = findIdx(result, idField, jsonData[idx][idField]);
if(num!=-1){
curRecord = result[num];
}
else{
curRecord = {};
};
// 循環(huán)每個json對象中的字段
for(var key in jsonData[idx]){
// 處理轉(zhuǎn)換的數(shù)據(jù)內(nèi)容
for(var i=0;i<fromFields.length;i++){
if(key == fromFields[i]){
curRecord[jsonData[idx][toField]+'-' + fromFields[i]] = jsonData[idx][key];
break;
}
}
// 除數(shù)據(jù)內(nèi)容外,只處理標(biāo)識字段數(shù)據(jù)
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']);
}
})


測試通過,表示轉(zhuǎn)換成功。

相關(guān)文章

  • 如何利用js實時監(jiān)聽input輸入框值的變化

    如何利用js實時監(jiān)聽input輸入框值的變化

    在做web開發(fā)時候很多時候都需要即時監(jiān)聽輸入框值的變化,以便作出即時動作去引導(dǎo)瀏覽者增強網(wǎng)站的用戶體驗感,這篇文章主要給大家介紹了關(guān)于如何利用js實時監(jiān)聽input輸入框值的變化,需要的朋友可以參考下
    2024-02-02
  • JavaScript仿小米官網(wǎng)注冊登錄功能的實現(xiàn)

    JavaScript仿小米官網(wǎng)注冊登錄功能的實現(xiàn)

    這篇文章主要為大家詳細介紹了如何通過JavaScript實現(xiàn)仿小米官網(wǎng)登錄注冊完整功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 微信小程序 參數(shù)傳遞實例代碼

    微信小程序 參數(shù)傳遞實例代碼

    這篇文章主要介紹了微信小程序 參數(shù)傳遞實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • 用Js實現(xiàn)的動態(tài)增加表格示例自己寫的

    用Js實現(xiàn)的動態(tài)增加表格示例自己寫的

    動態(tài)增加表格的方法有很多,但大多說實現(xiàn)起來比較繁瑣,本文的這個示例是作者自己手寫的,經(jīng)測試效果還不錯,但唯獨不兼容FF,感興趣的朋友可以參考下
    2013-10-10
  • 原生javascript單例模式的應(yīng)用實例分析

    原生javascript單例模式的應(yīng)用實例分析

    這篇文章主要介紹了原生javascript單例模式的應(yīng)用,結(jié)合實例形式分析了JavaScript單例模式的基本功能、原理、應(yīng)用及操作注意事項,需要的朋友可以參考下
    2020-02-02
  • JavaScript實現(xiàn)的多種鼠標(biāo)拖放效果

    JavaScript實現(xiàn)的多種鼠標(biāo)拖放效果

    這篇文章主要介紹了JavaScript實現(xiàn)的多種鼠標(biāo)拖放效果,涉及JavaScript響應(yīng)鼠標(biāo)事件動態(tài)變換頁面元素屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • webpack拆分壓縮css并以link導(dǎo)入的操作步驟

    webpack拆分壓縮css并以link導(dǎo)入的操作步驟

    我們運行打包后會發(fā)現(xiàn)less轉(zhuǎn)為了css文件,但css文件確通過js加入style標(biāo)簽,下面我們將css進行拆分出來,并以link標(biāo)簽引入,具體實現(xiàn)步驟一起看看吧
    2021-10-10
  • 仿豬八戒網(wǎng)左下角的文字滾動效果

    仿豬八戒網(wǎng)左下角的文字滾動效果

    覺得豬八戒網(wǎng)左下角的文字滾動,效果不錯!自己摸索了一下,以自己的方法實現(xiàn)了!沒有運用jQuery,不過用了自己的編寫的Js庫!
    2011-10-10
  • echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽

    echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽

    項目中有遇到需要使用餅圖展示每種狀態(tài)所占比例,去echarts官網(wǎng)學(xué)習(xí)了一番,下面這篇文章主要給大家介紹了關(guān)于echarts餅圖標(biāo)簽formatter使用及餅圖自定義標(biāo)簽的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • JavaScript之AOP編程實例

    JavaScript之AOP編程實例

    這篇文章主要介紹了JavaScript的AOP編程,以實例形式分析了javascript面向切面編程的實現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07

最新評論

双流县| 磐石市| 师宗县| 屯门区| 旌德县| 阜南县| 泰来县| 呼图壁县| 台东县| 罗城| 山东| 松潘县| 临颍县| 都匀市| 芜湖县| 自贡市| 陇南市| 金寨县| 新安县| 尼勒克县| 沧州市| 邢台县| 宁城县| 额尔古纳市| 密云县| 杂多县| 随州市| 定陶县| 乌审旗| 蒲城县| 高阳县| 会同县| 焦作市| 且末县| 安西县| 曲靖市| 西峡县| 佛坪县| 即墨市| 四平市| 奉新县|