Javascript从数组动态创建变量

时间:2017-05-06 08:19:49

标签: javascript arrays variable-variables

刚开始涉足Javascript,所以如果这是一个基本问题,我很抱歉。我有一系列键:

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

我想为数组中的每个元素动态创建一个Map(此数组的长度可能会发生变化)。 我正在尝试做这样的事情:

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)

输出:未定义水果

我尝试过搜索某种语法,以便能够动态创建此语法,同时还能够访问全局创建的地图,但我似乎无法找到解决方案。

谢谢!

2 个答案:

答案 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 :(得分:-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)

通过将您的键设置为窗口对象的属性,您可以直接使用变量名称来访问它,例如&#39; fruits&#39;。

但实际上不建议向窗口对象添加属性。你应该使用你自己的对象。