2012-08-03 5 views
0

배열의 한 형식에서 다른 형식으로 데이터 구조 변환에 대한 의문이 있습니다.어레이의 한 형식에서 다른 형식으로 데이터 변환

내 입력 데이터는 NT, BT

var testVar=[ 

{ 
    "count": 1, 
    "term": "Company", 
    "Company": [ 
     { 
      "Tata": [ 
       { 
        "count": 1, 
        "term": "Tatagroup" 
       } 
      ], 
      "sector": "Automotive", 
      "type": "Car" 
     }, 
     ] 
}, 
{ 
    "count": 2, 
    "term": "Country", 
    "Country": [ 
     { 
      "France": [ 
       { 
        "count": 1, 
        "term": "France" 
       } 
      ], 
      "region": "Europe", 
      "Player": "Zidane", 
      "term": "France", 
      "code": "FRA" 
     }, 
     { 
      "region": "Europe", 
      "Player": "Federer", 
      "term": "Switzerland", 
      "Switzerland": [ 
       { 
        "count": 1, 
        "term": "Switzerland" 
       } 
      ], 
      "code": "SWI" 
     } 
    ] 
}]; 

내가 형태로 변환하는 것을 시도하고,

[ "Tata" : [{"sector" : "automotive"}, "type" : "car"], "France": [{"region" : "Europe}, {"Player" : "Zidane"} , {"code" : "FRA"}], "switzerland" : [{"region" : "Europe}, {"Player" : "Federer"} , {"code" : "SWI"}]]; 

내가 http://jsfiddle.net/X2apw/2/ 같은 외모를 내놓았다 코드, 양식입니다 정확한 ..

+2

원하는 결과를 JSON – Musa

+0

하지 그래, 그 배열 –

+1

먼저 [ "타타": []]'않습니다 당신에게 오류를주십시오. '{ "Tata": []}'허용됩니다. '[{ ""Tata ": []}]'와 마찬가지입니다. 지금 당장은 JSON이 너무 많이 부러졌습니다. '[ "type": "car"]'도 마찬가지입니다. 다시,'{ "type": "car"}'또는'[{ "type": "car"}]'. 둘째 ... 왜 이걸하고 싶니? 만약 당신이 맞다고해도 왜 parsedData [0] .Tata [1] .type; parsedData [1]. 프랑스 [0]. 지역; parsedData [1]. 프랑스 [1]. 플레이어; parsedData [2] .switzerland [2] .code;'? 어느 용어가 어떤 배열의 어떤 객체에 있는지 알지 못하면 어떤 이점이 있습니까? – Norguard

답변

2
var testvar = [...]; 

var result = {}; 
for (var i=0; i<testvar.length; i++) { 
    var arr = testvar[i][testvar[i].term]; 
    for (var j=0; j<arr.length; j++) { 
     var resarr = []; 
     for (var k in arr[j]) { 
      if (typeof arr[j][k] == "string") { 
       var obj = {}; 
       obj[k] = arr[j][k]; 
       resarr.push(obj); 
      } else { 
       result[k] = resarr; 
      } 
     } 
    } 
} 

(Demo at jsfiddle.net)

그러나 결과 형식에 하나의 속성 개체 배열 대신 하나의 개체 만 사용하는 것이 좋습니다. 에 내부 루프 본문을 변경 :이 생겼습니다 -`:

 var resobj = {}; 
     for (var k in arr[j]) { 
      if (typeof arr[j][k] == "string") { 
       resobj[k] = arr[j][k]; 
      } else { 
       result[k] = resobj; 
      } 
     } 

(Demo)

+0

감사합니다 ... 입력 스위스를 제공 할 때 스위스와 관련된 모든 세부 정보가 필요하므로 데이터를이 형식으로 가져 오려고합니다. 핵심 필드는 다른 엔터티에 따라 다를 수 있으며이 실시간에 액세스하려고합니다. –

관련 문제