2017-12-19 13 views
-3

私はオブジェクトでJSON文字列を作ることができます。これはなぜ機能していないのですか(屋根用のjavascriptオブジェクト)

しかし、私は奇妙な問題を抱えています。

オブジェクトは以前の値を変更します。私はその理由を知らない

..

私のコードます。..

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" 
    } 

    ... 

    } 
} 

I alwa ysは愚かな質問をしているようです。

しかし、私は誰にも質問することはできません。

どうしてですか?

この問題の鍵は何かを教えてください。

答えて

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

oh ..! OK。わかりました! – cherryJang

関連する問題