2013-03-13 200 views
0

我创建了一个数组:二维数组 - 将对象添加到域

var test = new Array(5); 
for (i=0; i<=5; i++) 
{ 
test[i]=new Array(10); 
} 

,现在我想添加对象字段:

test[0][5].push(object); 

但出现错误:

Uncaught TypeError: Cannot call method 'push' of undefined

我使用“推”,因为我想把这个字段放入0-4个对象,但我不知道到底会有多少对象。 我应该如何改变它以使其正确?

+3

你得到错误的原因是'试验[0] [5]'是'返回undefined'(自阵列中没有任何东西在测试[0]),并调用'push'。我不确定我是否明白你的意思,“我想把这个字段放到这个字段中,但是我不知道到底会有多少个对象。” – Default 2013-03-13 20:12:09

+0

在一个字段中可以从0到4个对象 – Piotrek 2013-03-13 20:42:43

回答

1

将“< =”更改为“<”。

for (i = 0; i < 5; i++) 

数组是从零开始的,所以如果你有5个插槽数组,你要访问的最后一个插槽可以使用:

anArray[4] 
+0

是的,但这不是OP正面临的错误 – Bergi 2013-03-13 20:17:20

+0

是的你是对的。当我第一次看这些东西时,错误太多了。 – zachzurn 2013-03-13 20:20:25

0

使用前推问值是一个数组

if(test[0][5] instanceof Array) 
    test[0][5].push(object); 
0
test[0][5] = new Array(); // you need initialize this position in Array 
test[0][5].push(object); // and then push object 

test[0][5] = [object]; // directly create a new Array with object 

,但如果你只是想在这个位置的对象,你应该这样做:

test[0][5] = object; 
4

表达test[0]指的是一个新的Array实例,经行创建:

test[i]=new Array(10); 

但是,中没有这个数组。因此,test[0][5]引用一个未定义的对象。您需要将初始化为,然后才能对其执行push()操作。例如:

test[0][5] = []; // Set [0][5] to new empty array 
test[0][5].push(object); // Push object onto that array 

甚至:

test[0][5] = [object]; // Set [0][5] to one item array with object 
+0

但这个对象将在应用程序运行时添加。我无法清除这个数组。 – Piotrek 2013-03-13 20:39:46

+0

然后,在将'test [i]'设置为新数组后,循环访问该数组,并将每个索引设置为一个空数组。 – 2013-03-13 20:55:52

2
var test = new Array(5); 
for (i=0; i<=5; i++) 
{ 
    test[i]=new Array(); 
} 

这会让你创建一个多维数组。变量测试中的每个元素都是一个数组。

从这里你可以做

test[0].push("push string"); 
test[0].push("push string2"); 

从这里

test[0][1] will contain "push string2"