1

我需要创建基于用户定义数字的 javascript 对象。所以如果用户定义了 20 个,那么我需要创建 20 个变量。

var interval_1=0, interval_2=0, interval_3=0, interval_4=0, interval_5=0... interval_20=0;

我该怎么做才能动态创建对象的名称?

for (i=0; i<=interval; i++){
    var interval_ + i.toString() = i;
}
4

4 回答 4

4

呃,使用数组?

for( i=0; i<=count; i++) array[i] = i;
于 2012-08-08T01:11:20.987 回答
3

使用数组:

var i, count, interval = [];

// user defines count, 20 for example
count = 20;

for (i = 0; i < count; i++) {
    interval.push(i);
}

// interval[0] === 0
// interval[19] === 19
// interval.length === 20

请注意,这会将索引从 0 开始并上升到 count - 1。除非您从 1 开始,否则不要使用 i <= count。

这是一个 jsFiddle 来说明。在大多数浏览器中按 F12 打开开发工具并查看控制台,或将 console.log() 更改为 alert()。

链接:http: //jsfiddle.net/willslab/CapBN/1/

或者,您可以为每个值设置一个具有属性的对象:

var i, count, intervals = {};

count = 20;

for (i = 0; i < count; i++) {
    intervals["interval_" + i] = i;
}

//intervals.interval_0 === 0
//intervals.interval_19 === 19)

链接:http: //jsfiddle.net/willslab/EBjx7/2/

于 2012-08-08T01:49:15.143 回答
2
for (i=0; i<=20; i++){
    window["interval_" + i.toString()] = i;
}
于 2012-08-08T01:16:59.530 回答
1

Javascript变量可以通过以下方式创建:

  1. 变量声明,例如var x;
  2. 为未声明的变量赋值,例如y = 'foo'
  3. 形式参数列表中的标识符,例如function bar(x, y, z);
  4. 使用eval,例如eval( 'var x = 4');

如果所有其他方法都失败并且您想要说 5 个变量,您可以这样做:

var s = [];
var i = 5;
while (i--) {
  s[i] = 'a' + i;
}

eval('var ' + s.join(',') + ';');

alert(a0); // shows undefined

如果未定义a0 ,则最后一步将引发引用错误。

当然,您现在遇到的问题是如何访问它们。如果它们被创建为全局变量,您可以使用:

globalObj['a' + i];

其中globalObj通常是window,但是没有等效的访问函数变量,因为您无法访问它们的变量对象。

因此,通常的解决方案是将事物放入数组或对象中,您可以在其中迭代属性以查找您不知道名称的事物。

于 2012-08-08T01:21:42.057 回答