在下面的代码中,我得到“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的数据动态创建
答案 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方法
假设i
为0
然后
'myArray [i]'是"0"
,字符串"0"
没有方法推送。
但是您可以直接向元素添加新的String,如。
myArray[i] = "ID"