2015-11-22 139 views
1

我想將數據添加到數組的一部分是變量的數組。使變量變量javascript

如果這是有道理的?

這是我的代碼,我認爲它的東西做的[「排行榜」研究[D]的一部分,但沒有被添加到陣列

var 
    charts0 = [], 
    charts1 = [], 
    charts2 = [], 
    charts3 = [] 
    var newdata = data.split("|"); 
    var newdates = dates.split(","); 
    for (i = 0; i < newdates.length; i++) { 
     for (d = 0; d < newdata.length; d++) { 
     var dataparts = newdata[d].split(","); 
     ["charts"[d]].push({x: newdates[i], y: dataparts[i+1]}); 

     } 
    } 
+0

它不能完成(exent使用eval,你不應該)。 –

+1

如果你想命名一些東西,只需在頂部添加一層額外的數組。 –

回答

3

使用對象文本作爲關聯數組。

var charts = { 
    charts0: [], 
    charts1: [] 
}; 


/* ... */ 

charts['charts' + d].push(// ... 

但是,如果你要做到這一點,你可以簡單地使用一個數組,其中指數隱含:

var charts = [[],[]]; 

/* ... */ 

charts[d].push(// ... 
+0

爲此使用ES6計算屬性名稱有什麼意義?只需使用不帶括號的數字,或者可以使用數組初始化程序。 – Oriol

+0

沒有括號的數字是無效的語法嗎? – Ben

+0

請參見[Object Initialiser](http://www.ecma-international.org/ecma-262/5.1/#sec-11.1.5)。 A * PropertyName *可以是* NumericLiteral *。 – Oriol

1

創建您的數組一個新的對象像

var ch = { 
    charts0: [], 
    charts1: [], 
    charts2: [], 
    charts3: [] 
} 

然後你就可以做ch [「charts」+ d] [i]等等。

0

你現在這樣做的方式不是poss ible(不使用eval,你不應該這樣做)。但是,您可以使用對象爲變量添加額外的「圖層」。像這樣:

var myData = { 
    charts0: [], 
    charts1: [] 
    charts2: [] 
    charts3: [] 
}; 

var newdata = data.split("|"); 
var newdates = dates.split(","); 

for (i = 0; i < newdates.length; i++) { 
    for (d = 0; d < newdata.length; d++) { 
      var dataparts = newdata[d].split(","); 
      myData['charts' + d].push({x: newdates[i], y: dataparts[i+1]}); 
    } 
}