0

我得到一个这样的数组:

 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)

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

最好的问候,苏珊!

4

3 回答 3

1

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

全局变量是全局对象的属性,这有点奇怪,但这是唯一可以使用表达式创建有效变量的执行上下文,例如

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

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

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

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

将“变量”创建为对象的属性要好得多。

于 2013-05-29T10:17:55.310 回答
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数组和for..inJavascript 对象

于 2013-05-29T10:19:18.720 回答
0

试试这个:

counter = 0;
for (var content in array)
{
    window["data" + counter.toString()] = content;
    counter++;
}
于 2013-05-29T10:10:16.353 回答