/ / Javascript: Automatische Konvertierung von einem 1xn 2d Array in einen Vektor der Länge n - Javascript, Arrays, Typkonvertierung

Javascript: automatische Konvertierung von 1xn 2d Array zu Vektor der Länge n - Javascript, Arrays, Typ-Konvertierung

Ich lese einige Werte aus einer lokalen Datenbankmit ado in IE8 und Erzeugen eines 2d-Arrays. Ich möchte, dass der erste Index dieses Arrays das Feld ist und der zweite die Zeile. Aus diesem Grund möchte ich, auch wenn es nur ein Feld oder eine Zeile gibt, ein zweidimensionales Array. Der folgende Code beschreibt angemessen den Prozess, den ich zum Erstellen des Arrays verwende:

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
}

Vor der Schleife ist die Arraylänge 1. Danach sind es 10. Dies bedeutet, wenn ich ein 1xn-Array will, bekomme ich einen Vektor der Länge n.

Ich habe nicht einmal Zugang zu anderen Browsern, um zu sehen, ob dies anderswo geschieht. Ich bin in meinen Tools sehr eingeschränkt, aber das ist eine andere Geschichte.

Vielen Dank im Voraus für jede Hilfe.

Matt

Antworten:

3 für die Antwort № 1

Du brauchst das:

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

Da Javascript keine echten mehrdimensionalen Arrays hat, müssen Sie mit auf das zweite Array zugreifen a[0][i]nicht a[0, i]. Dies liegt daran, dass Sie wirklich ein Array von Arrays erstellen.


1 für die Antwort № 2

Javascript kennt keine mehrdimensionalen Arrays. Daher brauchen Sie:

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

Der Code ist möglicherweise mit der Kurzschreibweise des Arrays besser verständlich:

var a = [new Array(10)];
for (var i=0; i<a[0].length; i++)
a[0][i] = i;
alert(a.length); // 1

Ihr Ansatz mit a[0,i] wird als a interpretiert Expressionssequenz was bewertet zu iwäre also äquivalent zu a[i].