2017-05-06 86 views
0

剛剛開始涉足Javascript,因此如果這是一個基本問題,我很抱歉。我有鍵陣列:Javascript動態創建數組中的變量

keys = ['fruits','vegetables','fats','meats'] 

我想要動態地創建爲每個陣列中的這些元件的地圖(這個陣列的長度可以改變)。 我試圖做這樣的事情:

for (var i=0; i<keys.length; i++) { 
    map_name = keys[i]; 
    var map_name = new Map(); 
    map_name.set('foo','bar'); 
} 
console.log(fruits) 

輸出:水果是沒有定義

我試圖尋找某種語法,以便能夠動態地創建此同時還能夠訪問全球創建的地圖,但我似乎無法找到解決方案。

謝謝!

+0

請添加通緝地圖的示例。你只有鍵,但沒有值。 –

+0

嗨妮娜,我會從json文件 – tokatokeari

+0

獲得每個密鑰的值,但是您可以添加一個您擁有的和您想要的例子嗎? –

回答

0

試圖動態創建變量名是個壞主意。使用地圖來代替:

var keys = ['fruits','vegetables','fats','meats']; 
 

 
var things = new Map(); 
 
for (var i=0; i<keys.length; i++) { 
 
    var map_name = keys[i]; 
 
    var map_value = new Map(); 
 
    map_value.set('foo', 'bar'); 
 
    things.set(map_name, map_value); 
 
} 
 

 
console.log(things.get('fruits').get('foo'));

-1

試試這個

keys = ['fruits','vegetables','fats','meats'] 

for (var i=0; i<keys.length; i++) { 
    map_name = keys[i]; 
    window[map_name] = new Map(); 
    window[map_name].set('foo','bar'); 
} 

console.log(fruits) 

通過設置你的鑰匙作爲window對象的屬性,你可以通過只需直接使用變量名訪問它,像「水果」。

但實際上,不建議將屬性添加到窗口對象。你應該使用你自己的對象。