动态JavaScript变量名称

时间:2013-05-29 10:07:41

标签: javascript variables multidimensional-array

我得到一个这样的数组:

 var array = [ [ [1,1],[1,2],[1,3] ] , [ [2,2],[3,3],[4,4] ]  ] ;

我想将数组分成两个正常数组,并将内容放在独立递增的变量(data1,data2,data3,data4)中。

但var数组在不同时间的大小不同(有时3个数组,有时4个,......)现在我的问题是如何创建递增的独立变量data1,data2,...

我想到了这个

counter = 0;
for (var content in array)
{
   data + counter.toString() = content;
   content++;
}

但这不起作用(按照我没想到的方式:D)

我们可以一起找到解决方案吗?

祝你好运, 苏珊!!

3 个答案:

答案 0 :(得分:1)

创建变量(即本地执行上下文的属性)的唯一方法是在variable declaration中使用var声明它们,这不允许使用表达式。

全局变量属于全局对象的属性,这是一个javascript的怪癖,但这是唯一可以使用表达式创建实际变量的执行上下文,例如。

var globalObject = this;
globalObject.foo = 'foo';
globalObject[foo + 'bar'] = 'foobar';

在全球范围内,在许多方面(但不完全相同),相当于:

var foo = 'foo';
var foobar = 'foobar';

但是,您无法在函数上下文中获取对本地执行或变量对象的引用,因此您无法以这种方式创建局部变量。

最好将“变量”创建为对象的属性。

答案 1 :(得分:1)

var array = [ [ [1,1],[1,2],[1,3] ] , [ [2,2],[3,3],[4,4] ]  ] ;

for (var i=1;i<=array.length;i++)
   window["data" + i] = array[i-1].slice();

小提琴:http://jsfiddle.net/xC2kT/

我建议您对数组使用for,对Javascript对象使用for..in

答案 2 :(得分:0)

请改为尝试:

counter = 0;
for (var content in array)
{
    window["data" + counter.toString()] = content;
    counter++;
}