2015-11-22 51 views
1

在網上搜索,並試圖一對夫婦已經不適合我,所以想知道如果別人能幫助我解決這問題的工作修正。的Javascript使用變量值作爲名稱引用

基本上我已經附加了一些碼本表示的函數接收區域(區域是一個數字/有隻有永遠3個區域1,2,3)。然後我有3個數據集稱爲data1,data2,data3,我想使用傳遞的區域號參考。但是我需要將data1,data2全部保存爲單獨的數組,然後將它們插入到圖表(chartjs)中。

當用途按下開關打開或關閉,也有3個按鈕一個對每個區域,以使該數據集顯示在圖表上,然後關閉時,它會刪除區數據集的函數被調用。

任何幫助將是巨大的, 基蘭

var data1 = []; 
    var data2 = []; 
    var data3 = []; 

    // Adds/removes data sets from the chart 
    function redrawChart(zone){ 
     var dataSet = "data"+zone; 
     dataSet.push(7,8,8,9,10); 

     historyChart = new Chart(document.getElementById('ns-popout-graph').getContext("2d")).Line(newData); 
    } 
+0

在瀏覽器中,如果條件是正確的(即這些變量在全局範圍內聲明),您可以使用'dataSet = window ['data'+ zone]' –

回答

1

你真的沒有在這種情況下,很多選擇。最乾淨的一個是使用對象來保存陣列,然後構建動態密鑰很簡單:

var datas = { 
    data1: [], 
    data2: [], 
    data3: [] 
}; 

// Adds/removes data sets from the chart 
function redrawChart(zone) { 

    var dataSet = datas["data" + zone]; 
    dataSet.push(7,8,8,9,10); 

    // ... 
} 

另一種方法可能是eval,但不建議這樣做的方式來解決這個問題。需要注意的是,如果數據變量在全局命名空間(window)定義你仍然可以使用window['data' + zone],但我希望你不要污染全球範圍內,你呢? :)

+0

只有問題是我必須添加數組對此......爲了讓它們在圖表中,如果您查看歷史圖表=行,它會添加此新數據變量.... –

+0

var newData = { labels:labels, datasets:[{0 {0} 「RGBA(255,0,0,0.0)」, 數據:DATA1 },{ 填充顏色: 「RGBA(0,255,0,0.0)」, 數據:DATA2 },{ fillColor:「rgba(0,0,255,0.0)」, strokeColor:「lightblue」, pointColor:「lightblue」, pointStrokeColor:「rgba(0,0,0,0)」, data:data3 }] }; –

+0

你仍然可以做到這一點,當然:'數據:datas.data1','數據:datas.data1'等 – dfsq

相關問題