我创建了一个数组:
var test = new Array(5);
for (i=0; i<=5; i++)
{
test[i]=new Array(10);
}
现在我想向该字段添加对象:
test[0][5].push(object);
但出现错误:
未捕获的类型错误:无法调用未定义的方法“推送”
我使用“push”是因为我想在这个字段中放入 0-4 个对象,但我不知道到底有多少个对象。我应该如何更改它以使其正确?
我创建了一个数组:
var test = new Array(5);
for (i=0; i<=5; i++)
{
test[i]=new Array(10);
}
现在我想向该字段添加对象:
test[0][5].push(object);
但出现错误:
未捕获的类型错误:无法调用未定义的方法“推送”
我使用“push”是因为我想在这个字段中放入 0-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
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"
将“<=”更改为“<”。
for (i = 0; i < 5; i++)
数组是从零开始的,所以如果你有一个有 5 个插槽的数组并且你想访问你将使用的最后一个插槽:
anArray[4]
在使用 push 之前询问值是一个数组
if(test[0][5] instanceof Array)
test[0][5].push(object);
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;