2017-12-19 14 views
-3

객체로 JSON 문자열을 만들 수있다.이것이 작동하지 않는 이유를 모르겠다. (지붕 자바 스크립트 객체)

하지만 이상한 문제가 있습니다.

개체가 이전 값을 변경합니다. 내가 이유를 모르는

는 ..

내 코드는 ...

var sStr = "L1^P1^Viscosity:vp1,L1^P2^Viscosity:vp2,L1^P3^Viscosity:vp3,L1^P4^Viscosity:vp4,L1^P5^Viscosity:vp5" 

    var objChild1 = {}; 
    var objChild2 = {}; 
    var objRtn = {}; 

    var arrStr = sStr.split(','); 
    for (var i = 0; i < arrStr.length; i++) { 
     var arrSpe = arrStr[i].split('^'); 
     objChild2["" + arrSpe[2].split(':')[0] + ""] = arrSpe[2].split(':')[1]; 
     objChild1["" + arrSpe[1] + ""] = objChild2; 
     objRtn["" + arrSpe[0] + ""] = objChild1; 
    } 

    var sOp = JSON.stringify(objRtn, null, 2); 

나는 ..이 논리의 결과가

{ 
    "L1": { 
    "P1": { 
     "Viscosity": "vp1" 
    }, 
    "P2": { 
     "Viscosity": "vp2" 
    }, 
    "P3": { 
     "Viscosity": "vp3" 
    } 

    ...  

    } 
} 

이를 생각하지만, 결과는

{ 
    "L1": { 
    "P1": { 
     "Viscosity": "vp5" 
    }, 
    "P2": { 
     "Viscosity": "vp5" 
    }, 
    "P3": { 
     "Viscosity": "vp5" 
    } 

    ... 

    } 
} 

알와 어리석은 질문을하는 것 같습니다.

하지만 물어볼 사람이 없습니다.

왜 이런 일이 발생합니까?

이 문제의 핵심은 무엇인지 알려주세요.

답변

2

반복 할 때마다 동일한 objChild1objChild2 개 개체를 사용하고 있습니다. 속성 이름이 아직 작성되지 않은 경우에만 매번 새 오브젝트를 작성해야합니다.

var sStr = "L1^P1^Viscosity:vp1,L1^P2^Viscosity:vp2,L1^P3^Viscosity:vp3,L1^P4^Viscosity:vp4,L1^P5^Viscosity:vp5"; 
 
var arrStr = sStr.split(','); 
 
var objRtn = {}; 
 
for (var i = 0; i < arrStr.length; i++) { 
 
    var arrSpe = arrStr[i].split('^'); 
 
    var lnum = arrSpe[0]; 
 
    var pnum = arrSpe[1]; 
 
    var prop = arrSpe[2].split(':'); 
 
    var propname = prop[0]; 
 
    var propval = prop[1]; 
 
    if (!objRtn[lnum]) { 
 
     objRtn[lnum] = {}; 
 
    } 
 
    if (!objRtn[lnum][pnum]) { 
 
     objRtn[lnum][pnum] = {}; 
 
    } 
 
    objRtn[lnum][pnum][propname] = propval; 
 
} 
 
console.log(JSON.stringify(objRtn, null, 2));

+0

오 ... 감사합니다! 난 단지 .. .. objChild2 = {} – cherryJang

+0

당신은'L1','L2' 등을 가지고 있기 때문에 둘 다 필요합니다. – Barmar

+0

오 ..! 승인. 이해 했어! – cherryJang