Javascript:从 1xn 2d 数组自动转换为长度为 n 的向量

Javascript: automatic conversion from 1xn 2d array to vector of length n

本文关键字:向量 转换 1xn 2d 数组 Javascript      更新时间:2023-09-26

我正在使用IE8中的ado从本地数据库中读取一些值并生成一个2d数组。我希望这个数组的第一个索引是字段,第二个索引是行。出于这个原因,即使只有一个字段或一行,我也想要一个二维数组。以下代码充分描述了我用于创建数组的过程:

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 的向量。

我什至无法访问其他浏览器以查看这是否发生在其他地方。我的工具非常有限,但那是另一回事了。

提前感谢任何帮助。

马 特

你需要这个:

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] 来访问第二个数组。这是因为您实际上是在创建一个数组数组。

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]方法被解释为计算结果为 i 的表达式序列,因此等价于 a[i]