>  기사  >  웹 프론트엔드  >  json 데이터 행을 columns_javascript 기술로 변환하기 위한 js 예제 코드

json 데이터 행을 columns_javascript 기술로 변환하기 위한 js 예제 코드

WBOY
WBOY원래의
2016-05-16 17:27:241165검색

월 정저우 - 전기 신샹 - 전기 안양 - 전기
201201 33 29 23
201202 35 26 25
201203 34 27 24
201204 36 28 26
201205 34.3 28 .8 24.3
이런 식으로 Ext의 차트는 3개의 시리즈로 표시할 수 있습니다.
이 기능을 구현하기 위해 다음 함수를 작성했습니다.

코드 복사 코드는 다음과 같습니다.

function CovertData(jsonData,idField, fromField, toField){
var result = [], curRecord =null, num;
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) ;
}
}
결과 반환
}

function findIdx(jsonData, columnName, value){ for(var idx = 0;idxif(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'},
{연월 :201203,ppq:48,spq:43,회사:'vcom'},
{연월:201204,ppq:52,spq:59,회사:'vcom'}]

var fromField = 'ppq,spq', toField = '회사', idField = '연도월';

this.resultData = CovertData(this.jsonData,idField,fromField, toField),

"테스트 저장소에 열이 있음":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) ,'연월',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']); 주장Equals('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으로 문의하세요.