/ / Javascript: automatická konverzia z 1xn 2d poľa na vektor dĺžky n - javascript, array, type-conversion

Javascript: automatická konverzia z 1xn 2d poľa na vektor dlžky n - javascript, polia, typová konverzia

Som čítanie niektorých hodnôt z lokálnej databázypoužitie ado v IE8 a generovanie 2d poľa. Chcem, aby prvý index tohto poľa bol pole a druhý riadok. Z tohto dôvodu, aj keď je len jedno pole alebo jeden riadok, chcem dvojrozmerné pole. Nasledujúci kód primerane popisuje proces, ktorý som použil na vytvorenie poľa:

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
}

Pred slučkou je dĺžka poľa 1. Potom je to 10. To znamená, že keď chcem 1xn pole, dostanem vektor dĺžky n.

Nemám ani prístup k iným prehliadačom, aby som zistil, či sa to deje inde. Som veľmi obmedzený v mojich nástrojoch, ale to je iný príbeh.

Ďakujeme vopred za každú pomoc.

matt

odpovede:

3 pre odpoveď č. 1

Potrebujete toto:

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

Pretože Javascript nemá „skutočné multidimenzionálne polia, budete musieť pristupovať k druhému poľu s a[0][i], nie a[0, i], Je to preto, že ste skutočne vytvorili pole polí.


1 pre odpoveď č. 2

Javascript nepozná viacrozmerné polia. Preto potrebujete:

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

Kód môže byť ľahšie zrozumiteľný pomocou skratkového označenia poľa:

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

Váš prístup a[0,i] je interpretovaný ako a sekvencia expresie ktorý hodnotí i, takže by to bolo ekvivalentné a[i].