我正在使用IE8中的ado从本地数据库中读取一些值并生成一个二维数组。我希望这个数组的第一个索引是字段,第二个索引是行。因此,即使只有一个字段或一行,我也想要一个二维数组。以下代码充分描述了我用于创建数组的过程:
function test() {
var a = new Array(1);
alert(a.length); // 1
for (var i=0; i<10; i++)
a[0,i] = i;
alert(a.length); // 10
}
在循环之前,数组长度为1.之后它为10.这意味着当我需要1xn数组时,我得到一个长度为n的向量。
我甚至无法访问其他浏览器以查看是否在其他地方发生这种情况。我的工具非常受限制,但这是另一个故事。
提前感谢您的帮助。
马特
答案 0 :(得分:3)
你需要这个:
function test() {
var a = [[]]; // create an array within an array using shorthand notation, don't use new Array().
// a clearer way to explain the above is this:
// var a = []; // create an empty array with shorthand notation
// a[0] = []; // create an empty array as the first element of a
alert(a.length); // 1
for (var i = 0; i < 10; i++) {
a[0][i] = i;
}
alert(a.length); // 1
}
由于Javascript没有真正的多维数组,因此您必须使用a[0][i]
访问第二个数组,而不是a[0, i]
。这是因为你真的在创建一个数组数组。
答案 1 :(得分:1)
Javascript不知道多维数组。因此,您需要:
var a = new Array(1);
alert(a.length); // 1
for (var i=0; i<a.length; i++) { // useless :-)
a[i] = new Array;
for (var j = 0; j < 10; j++)
a[0][j] = j;
}
alert(a.length); // 1
使用数组简写表示法可能更容易理解代码:
var a = [new Array(10)];
for (var i=0; i<a[0].length; i++)
a[0][i] = i;
alert(a.length); // 1
您使用a[0,i]
的方法被解释为expression sequence,其评估结果为i
,因此等同于a[i]
。