我有一个数组
var n = ["Joe", "Peter", "Mary", "Chris", "Dave", "Sally", "Pat", "John", "Larry", "Andrew"];
我想为数组中的每个字符串创建一个变量,即
var Joe;
var Peter;
var Mary;
我遇到了this的MatLab,但有没有办法用Javascript做到这一点?
这是Fiddle我想到的方法,但很明显它不起作用!
答案 0 :(得分:6)
...有没有办法用Javascript做到这一点?
不在通用情况下,没有。 (呃,见下文。)你可以用全局变量做到这一点,如下所示:
var index;
for (index = 0; index < n.length; ++index) {
window[n[index]] = /*...whatever value you want the global to have...*/;
}
...但这仅适用于全局变量(并且window
特定于浏览器环境,尽管它可以执行类似的外部浏览器),并且禁止某些特定原因,这不是一个好主意。
您可以为每个名称创建一个具有属性的对象:
var obj = {};
var index;
for (index = 0; index < n.length; ++index) {
obj[n[index]] = /*...whatever value you want the global to have...*/;
}
...这基本上是全局变量的情况,但是有一个对象而不是全局变量。但是,除非你有充分的理由去做,否则有一点小问题(尽管它不像创建一堆全局变量那样有害)。
好的,那不是相当是真的。你可以这样做:
var index;
for (index = 0; index < n.length; ++index) {
eval("var " + n[index]);
}
实际上,这将使用n
中的名称在当前范围内创建变量。我不推荐它。 : - )
答案 1 :(得分:3)
我不建议这样做,但可以使用:
var i;
for(i=0; i<n.length; i++) {
window[n[i]] = ...;
}
我建议使用以下方法将它们包装在一个对象中:
var i, holder = {};
for(i=0; i<n.length; i++) {
holder [n[i]] = ...;
}
答案 2 :(得分:0)
您可以使用关联数组。所以它可能看起来像这样:
var array = {
"John": 1,
"Mary": 284
};
然后你将通过array["John"]
引用这个值,然后返回1。
答案 3 :(得分:0)
您可以创建如下对象:
var names = {
Joe: "...",
Mary: "...",
// etc...
}
并访问:
names.Joe