/ / Javascript: автоматичне перетворення з масиву 1xn 2d до вектора довжини n - javascript, масиви, перетворення типу

Javascript: автоматичне перетворення з 1xn 2d масиву на вектор довжини n - javascript, масиви, перетворення типу

Я читаю деякі значення з локальної бази данихвикористовуючи ado в IE8 і генеруючи 2d масив. Я хочу, щоб перший індекс цього масиву був полем, а другий - рядком. З цієї причини, навіть якщо є тільки одне поле або один рядок, я хочу 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.

Я навіть не маю доступу до інших браузерів, щоб побачити, якщо це відбувається в іншому місці. Я дуже обмежений у своїх інструментах, але це інша історія.

Заздалегідь дякую за будь-яку допомогу.

Метт

Відповіді:

3 для відповіді № 1

Вам це потрібно:

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 для відповіді № 2

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] інтерпретується як a послідовності експресії який оцінює до i, так би еквівалентно a[i].