7

在下面的代码中,我收到“推送不是函数”错误。谁能让我知道我在这里做错了什么?我正在尝试在 Javascript 中创建二维数组。

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"]

而且我不能硬编码,我需要根据数据库中的数据动态创建它

4

3 回答 3

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

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

有效的语法是

myArray.push("ID");

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

于 2013-01-10T12:18:44.870 回答
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]];
}
于 2013-01-10T12:30:24.187 回答
3

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

然后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);

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

正如您在示例中看到的,第一次

push紧随其后arr,它的 Arrays 方法并将新元素附加到 Array

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


您在代码中所做的是尝试在 Elements Array 上调用 push 方法

假设i0那么

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

但是您可以直接将新的字符串分配给 Element 之类的。

myArray[i] = "ID"

于 2013-01-10T12:18:01.640 回答