2014-11-16 2 views
0

에 그룹 JSON 개체에 내가 JSON 데이터가 어떻게 :자바 스크립트 : 배열

var arr1 = [ 
{"A":{"val1"=>"3", "val2"=>"34"}}, //val1 = A1, val2 = A2 
{"B":{"val1"=>"23", "val2" =>"16"}}, //val1 = B1, val2 = B2 
... 
] 

var arr2 = [ 
"0":{"A1":"3", "B1":"23", ...}, 
"1":{"A2":"34", "B2":"16", ...} 
] 

:

{"A1":"3","A2":"34","B1":"23","B2":"16","C1":"234","C2":"43","D1":"234","D2":"54"} 

지금 난 그냥 배열로 그룹 JSON 데이터를 원하는 배열을 그룹화하고 만들려면 어떻게합니까? 도와 줘, 고마워. 이

+0

를 시도? 그것은 단순하지만 평범한 논리처럼 보입니다. 정말 어려운 것은 없습니다. 키 'A1'의 첫 글자가 A인지 확인한 다음 모든 A를 함께 그룹화하십시오. 그렇다면 JSON을 더 잘 구조화하지 않으시겠습니까? – dayuloli

+0

arr2는 객체의 배열입니까? {0 ": {"A1 ":"3 ","B1 ":"23 ", ...}}, {"1 ": {"A2 ":" 34 ","B2 ":"16 ", ...}} ] –

+2

은 어색한 구조를 취하고 똑같이 어색한 구조로 변환하는 것처럼 보입니다. – charlietfl

답변

0

우리는

var a = {"A1":"3","A2":"34","B1":"23","B2":"16","C1":"234","C2":"43","D1":"234","D2":"54"}; 

var arr1Obj = {}; 
var arr2 = [{"0": {}}, {"1": {}}]; 
for (var key in a) { 
    var split = (key.split("")); 
    if (!arr1Obj[split[0]]) { 
     arr1Obj[split[0]] = {} 
    } 
    arr1Obj[split[0]]["val" + split[1]] = a[key]; 

    arr2[parseInt(split[1]) - 1][key] = a[key]; 
} 
var arr1 = []; 
for (var key in arr1Obj) { 
    var obj = {}; 
    obj[key] = arr1Obj[key]; 
    arr1.push(obj); 
} 

당신이 여기 (대답의 끝)을 시도 할 수 있습니다 이동 : 당신은 무엇을

run = function() { 
 
    var input = document.getElementById("input"); 
 
    var a = JSON.parse(input.value); 
 
    
 
    var arr1Obj = {}; 
 
    var arr2 = [{"0": {}}, {"1": {}}]; 
 
    for (var key in a) { 
 
     var split = (key.split("")); 
 
     if (!arr1Obj[split[0]]) { 
 
      arr1Obj[split[0]] = {} 
 
     } 
 
     arr1Obj[split[0]]["val" + split[1]] = a[key]; 
 
     
 
     arr2[parseInt(split[1]) - 1][key] = a[key]; 
 
    } 
 
    var arr1 = []; 
 
    for (var key in arr1Obj) { 
 
     var obj = {}; 
 
     obj[key] = arr1Obj[key]; 
 
     arr1.push(obj); 
 
    } 
 
    
 
    document.getElementById("output1").innerHTML = JSON.stringify(arr1); 
 
    document.getElementById("output2").innerHTML = JSON.stringify(arr2); 
 
}
input { 
 
    width: 100%; 
 
} 
 

 
div { 
 
    margin-top: 10px; 
 
}
<input type="text" id="input" value='{"A1":"3","A2":"34","B1":"23","B2":"16","C1":"234","C2":"43","D1":"234","D2":"54"}' /> 
 

 
<button onclick="run()">run</button> 
 

 
<div id="output1"></div> 
 
<div id="output2"></div>