Push不是函数JavaScript错误

时间:2013-01-10 12:14:24

标签: javascript

在下面的代码中,我得到“push is not a function”错误。谁能告诉我这里我做错了什么?我正在尝试在Javascript中创建2D数组。

var myArray = new Array(4);
myArray = ["0","0","0","0"];

for (var i=0; i<myArray.length; i++) {
    myArray[i].push("ID");
    myArray[i] = new Array(1);
    for (var j=0; j<myArray[i].length; i++) {
        myArray[i][j].push("Array[j]");
    }
}

Firebug指着我:

myArray[i].push("ID");

对于这一行,我得到“TypeError:myArray [i] .push不是函数”

最终数组看起来应该是:

[ID,"SomeValue1"],
[ID,"SomeValue2"],
[ID,"SomeValue3"]

我不能硬编码,我需要根据来自DB的数据动态创建

3 个答案:

答案 0 :(得分:5)

myArray[i].push("ID");

当然是无效的,因为它是为Array定义的函数而不是它的元素。

有效的语法是

myArray.push("ID");

要详细了解array.push() go here

答案 1 :(得分:4)

这将创建您的示例。

var myArray = new Array(4);
for (var i = 0; i < myArray.length; i++) {
  myArray[i] = ["ID", "SomeValue" + (i+1)];
}

但是如果你需要从数据库设置数据,那么如何在Javascript中设置?如果它在不同的数组中,您可以执行以下操作:

var dbArray = ["SomeValue1", "SomeValue2", "SomeValue3"];

var myArray = new Array(dbArray.length);
for (var i = 0; i < myArray.length; i++) {
  myArray[i] = ["ID", dbArray[i]];
}

答案 2 :(得分:2)

首先,您可以使用Array Literal []来初始化数组,这应该始终是首选的

然后push是一个Array方法。所以你必须在一个数组上调用它

myArray[i]是数组的元素,myArray数组

var arr = [];

for (var i = 0; i  < 5;i++) {
  arr.push = []; //Uses the Arrays push method
  for ( var j = 0; j < 5; j++)
    arr[i][j] = "Asd"; //Sets an Element
}
  console.log(arr);

如您所见,不需要“Dim”一个数组,您只需将一个数组分配给一个变量并开始在其中推送元素。

正如您在示例中所见,第一次

push直接在arr之后,它是数组方法并向数组附加一个新元素

在第二个示例中,它访问Element并直接为其赋值


您在代码中正在尝试调用Elements数组上的push方法

假设i0然后

'myArray [i]'是"0",字符串"0"没有方法推送。

但是您可以直接向元素添加新的String,如。

myArray[i] = "ID"