0

IE8でadoを使用してローカルデータベースからいくつかの値を読み取り、2D配列を生成しています。この配列の最初のインデックスをフィールドにし、2番目のインデックスを行にします。このため、フィールドが1つまたは行が1つしかない場合でも、2次元配列が必要です。次のコードは、配列の作成に使用しているプロセスを適切に記述しています。

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のベクトルを取得することを意味します。

他の場所でこれが発生するかどうかを確認するために、他のブラウザにアクセスすることさえできません。私は自分のツールに非常に制約がありますが、それは別の話です。

助けてくれてありがとう。

マット

4

2 に答える 2

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
}​

a[0][i]Javascriptには真の多次元配列がないため、。ではなく、を使用して2番目の配列にアクセスする必要がありますa[0, i]。これは、実際に配列の配列を作成しているためです。

于 2012-05-30T00:59:56.407 に答える
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]として解釈されるため、と同等になります。ia[i]

于 2012-05-30T01:03:33.603 に答える