2012-03-06 7 views
-1

私はcalcOptionsDataは()originalDataと呼ばれる、すべての時間が欲しい2つのJS変数は同じJsonオブジェクトを参照します。

[ 
{"type" : "pie","name" : "Gender", 
"data" : [["Male",32],["Female",11]]}, 
{"A123":"F","A223":"M","A423":"F","A332":"M","B327":"F"} 
] 

function calcOptionsData() { 
    ...  
    var maleCount = 0; 
    var femaleCount = 0;  
    ...    
    ... 
    $.each(val, function(index, item) { 
     if (memberInfo[item] == 'M')      
      maleCount += 1; 

     if (memberInfo[item] == 'F')      
      femaleCount += 1; 
    }); 

    options.series[0].data[0][1] = originalData.data[0][1]; 
    options.series[0].data[1][1] = originalData.data[1][1]; 

    if (radioBttnClicked == 'Gender') 
    { 

     options.series[0].data[0][1] += maleCount; 

     options.series[0].data[1][1] += femaleCount; 
    } 
} 

を返し

$.getJSON('json.ashx?mode=Gender', function (data) { 
      memberInfo = data[1]; 
      options.series = data; 
      originalData = data[0]; 
      ... 
      ... 
    }); 

持っているがoptions.series [0] .dataのにリセットされます元々getJSONから生成された値現在のコードは、options.series [0] .dataを使用してoriginalDataを反映します。

おかげで、

+1

あなたの質問は不明です。 – Jivings

答えて

2

あなたはJSONオブジェクトの独立したディープコピーを作成するために$.extend(true, {}, originalObject)を使用することができます。

このコピーは、元のオブジェクトに影響を与えずに、目的に応じて使用できます。

詳細については、the docsを参照してください。

+0

JSONオブジェクトではなく、呼び出されるオブジェクトリテラルです。http://en.wikipedia.org/wiki/Literal_(computer_programming) –

0

jsonオブジェクトのディープコピーを別の変数に行うには、jQueryのextendを使用します。

関連する問題