我需要创建基于用户定义数字的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;
}
答案 0 :(得分:4)
嗯,使用数组?
for( i=0; i<=count; i++) array[i] = i;
答案 1 :(得分: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开始并向上计数 - 1.除非你从1开始,否则不要使用i&lt; = 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)
答案 2 :(得分:2)
for (i=0; i<=20; i++){
window["interval_" + i.toString()] = i;
}
答案 3 :(得分:1)
Javascript变量可以通过以下方式创建:
var x;
y = 'foo'
; function bar(x, y, z);
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 ,但由于无法访问其变量对象,因此无法访问函数变量。
所以通常的解决方案是把东西放到数组或对象中,你可以迭代这些属性来找到你不知道名字的东西。