我创建了一个数组:
var test = new Array(5);
for (i=0; i<=5; i++)
{
test[i]=new Array(10);
}
现在我想在该字段中添加对象:
test[0][5].push(object);
但出现错误:
未捕获的TypeError:无法调用未定义的方法'push'
我正在使用“推”,因为我想将0-4个对象放入此字段,但我不确切知道有多少个对象。 我应该如何更改它以使其正确?
答案 0 :(得分: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
答案 1 :(得分: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"
答案 2 :(得分:1)
将“&lt; =”更改为“&lt;”。
for (i = 0; i < 5; i++)
数组基于零,所以如果你有一个包含5个插槽的数组,并且你想要访问你将使用的最后一个插槽:
anArray[4]
答案 3 :(得分:0)
在使用之前push ask to value是一个数组
if(test[0][5] instanceof Array)
test[0][5].push(object);
答案 4 :(得分: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;