2013-05-24 4 views
0

Я пытался создать 3-мерный массив и не мог найти простой способ сделать это.создание многотоновых массивов (JS)

array = [[[]]]; 

или

array = [][][]; 

или

array = []; array[] = []; array[][] = []; 

бы, например, не работает. (консоль говорит, что второй массив «undefined», а не объект, или второй и третий пример дают ошибку синтаксического анализа).

Я тоже не могу скомпилировать информацию, так как я понятия не имею, что будут индексы и содержимое массива (они создаются «на лету» и в зависимости от ввода пользователя. первый массив может иметь индекс 4192). Возможно, мне придется создать каждый массив, прежде чем назначать их, но было бы намного проще и быстрее, если есть более простой способ определения трехмерных массивов. (там будет около 2 массивов, 25 подмассивов и 800 подпузырей), каждая миллисекунда экономит жизнь, так сказать.

помогите пожалуйста?

ответ

3

JavaScript динамически типизирован. Просто храните массивы в массиве.

function loadRow() { 
    return [1, 2, 3]; 
} 

var array = []; 
array.push(loadRow()); 
array.push(loadRow()); 
console.log(array[1][2]); // prints 3 
1

Поскольку массивы в javascript не являются истинными массивами, на самом деле не существует многомерного массива. В javascript у вас есть только массивы внутри массива. Вы можете определить массив статически, как это:

var a = [ 
[1,2,3], 
[4,5,6], 
[7,8,9] 
]; 

Или динамически, как это:

var d = []; 
var d_length = 10; 
for (var i = 0;i<d_length;i++) { 
    d[i] = []; 
} 

UPDATE

Вы также могли бы использовать некоторые вспомогательные функции:

function ensureDimensions(arr,i,j,k) { 
    if(!arr[i]) { 
    arr[i] = []; 
    } 
    if(!arr[i][j]) { 
    arr[i][j] = []; 
    } 
} 

function getValue(arr,i,j,k) { 
    ensureDimensions(i,j,k); 
    return arr[i][j][k]; 
} 

function setValue(arr,newVal,i,j,k) { 
    ensureDimensions(i,j,k); 
    arr[i][j][k] = newVal; 
} 
+0

спасибо , но, как я уже говорил, я не знаю, что будет в массивах или как долго эй будет .. этот подход, к сожалению, не поможет мне. – user1916542

Смежные вопросы