Javascript 从数组动态创建变量

Javascript dynamically create variables from array

提问人:tokatokeari 提问时间:5/6/2017 最后编辑:melpomenetokatokeari 更新时间:5/6/2017 访问量:636

问:

刚开始涉足 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)

输出:未定义 fruits

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

谢谢!

JavaScript 数组 变量

评论

0赞 Nina Scholz 5/6/2017
请同时添加一个通缉地图的示例。您只有键,但没有值。
0赞 tokatokeari 5/6/2017
嗨,Nina,我将从json文件中获取每个键的值
0赞 Nina Scholz 5/6/2017
好的,但是你能举例说明你拥有什么和你想要什么吗?

答:

0赞 melpomene 5/6/2017 #1

尝试动态创建变量名称是一个坏主意。请改用地图:

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赞 HarshaXsoad 5/6/2017 #2

试试这个

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)

通过将键设置为窗口对象的属性,您可以直接使用变量名称(如“fruits”)来访问它。

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