1

我创建了一个数组:

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

现在我想向该字段添加对象:

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

但出现错误:

未捕获的类型错误:无法调用未定义的方法“推送”

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

4

5 回答 5

5

该表达式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
于 2013-03-13T20:16:15.083 回答
2
var test = new Array(5);
for (i=0; i<=5; i++)
{
  test[i]=new Array();
}

这将让您创建一个多维数组。变量 test 中的每个元素都是一个数组。

从这里你可以做

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

从这里

test[0][1] will contain "push string2"
于 2013-03-13T20:17:03.487 回答
1

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

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

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

anArray[4]
于 2013-03-13T20:12:35.147 回答
0

在使用 push 之前询问值是一个数组

if(test[0][5] instanceof  Array)
    test[0][5].push(object);
于 2013-03-13T20:15:27.787 回答
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;
于 2013-03-13T20:15:40.293 回答