开发者问题收集

Push 不是函数 JavaScript 错误

2013-01-10
50090

在下面的代码中,我得到了“push 不是函数”的错误。有人能告诉我我在这里做错了什么吗?我正在尝试在 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"]

我无法硬编码,我需要根据数据库中的数据动态创建它

3个回答
myArray[i].push("ID");

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

有效语法是

myArray.push("ID");

要了解有关 array.push() 的更多信息,请访问 此处

yogi
2013-01-10

这将创建您的示例。

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]];
}
Rhumborl
2013-01-10

首先,您可以使用数组文字 [] 来初始化数组,这始终是首选

然后 push 是一个数组方法。因此您必须在数组上调用它

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 之后,它是数组方法并将新元素附加到数组

而在第二个示例中,它访问元素并直接为其分配一个值


您在代码中所做的是尝试在元素数组上调用 push 方法

假设 i0

'myArray[i]' 是 “0” 并且字符串 “0” 没有方法推送。

但是你可以直接将一个新的字符串分配给元素。

myArray[i] = "ID"

Moritz Roessler
2013-01-10