帝王谷资源网 Design By www.wdxyy.com

月份 郑州-电量 新乡-电量 安阳-电量
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']);
}
})

测试通过,表示转换成功。

标签:
json,数据,转换

帝王谷资源网 Design By www.wdxyy.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
帝王谷资源网 Design By www.wdxyy.com

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。