提问人:tokatokeari 提问时间:5/6/2017 最后编辑:melpomenetokatokeari 更新时间:5/6/2017 访问量:636
Javascript 从数组动态创建变量
Javascript dynamically create variables from array
问:
刚开始涉足 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
我尝试搜索某种语法,以便能够动态创建它,同时还能够访问全局创建的地图,但我似乎找不到解决方案。
谢谢!
答:
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”)来访问它。
但实际上,不建议向窗口对象添加属性。为此,您应该使用自己的对象。
评论