JavaScript错误:Push不是一个函数。

7
在下面的代码中,我遇到了“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 尝试向 myArray[i] 中添加内容,而在你的情况下,myArray[i] 是 "0",它是一个字符串而不是一个数组,因此没有 .push 方法可用...但是在下一行中,你又覆盖了 myArray[i]...是不是搞反了?请注意检查。 - Alex K.
再看一遍,这一切都很混乱,除了 j 循环每次递增 i 之外。我不明白 push("ID") 的目的是什么。最终数组应该长什么样? - Rhumborl
3个回答

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

这显然是无效的,因为它是针对一个Array而不是其元素定义的函数。

有效的语法应该是:

myArray.push("ID");

想要了解更多有关 array.push() 的内容,请点击 这里


5
这将创建您的示例。
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]];
}

工作得很好,只需要进行一些小修改。谢谢。 - Monkey D. Luffy

3
首先,您可以使用数组字面量[]来初始化数组,这应该始终是首选方法。
然后,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"没有push方法。

但是您可以直接将新字符串分配给该元素,例如:

myArray[i] = "ID"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接