2016-11-01 7 views
2
var a = new Array(); 
var b = [1,2,3,4,5,6,7]; 
for(i in b){a[i] = new Array(new Array());} 
a[0][1][2] = Math.random();// error:VM205:1 Uncaught TypeError: Cannot set property '2' of undefined(…) 

Как использовать трехмерный массив в javascript?трехмерный массив в javascript

Я имею в виду, как использовать его, как java.
например: double a = new double[length][length][length];

как запомнить память заранее.

+1

Вам нужно инициализировать каждый массив необходимыми значениями. Нет истинного многомерного массива, который будет полностью распределен только с объявлением. –

+0

Его потому, что новый массив задает массив длины 0. Поэтому 'a [0] [0]' будет иметь массив, но 'a [0] [1]' будет 'undefined'. Если вы попытаетесь объяснить, чего вы пытаетесь достичь, мы могли бы порекомендовать что-то – Rajesh

+1

Возможный дубликат: http://stackoverflow.com/questions/7545641/javascript-multidimensional-array – teroi

ответ

2

В JavaScript нет использования в инстанцировании переменных заранее, и нет такого понятия, как распределение памяти во время компиляции, потому что, эй, нет времени компиляции! Но если вы действительно хотите, чтобы это сделать, это не так тривиально, как и в Java:

const length = 7; 
const range = new Array(length).fill(); 
const array = range.map(e => range.map(e => range.map(e => e))); 

console.log(JSON.stringify(array)); // -> "[[[null,null,null],[null,null,null],[null,null,null]],[[null,null,null],[null,null,null],[null,null,null]],[[null,null,null],[null,null,null],[null,null,null]]]" 

Единственная точка в нем является то, что вы всегда можете быть уверены, что, до тех пор, пока вы остаетесь в [0, длина), array[x][y][z] для любых x, y и z не будет выбрасывать TypeError.

0

вы можете сделать, как этот

const items = [[[]]] // init 3d array 
 

 
// assign values 
 
items[0][0][0] = 0 
 
items[0][0][1] = 1 
 
items[0][0][2] = 2 
 

 
// display 
 
for (const i of items) { 
 
    for (const j of i) { 
 
    for (const k of j) { 
 
     console.log('k = ', k) 
 
    } 
 
    } 
 
}

+0

Я имею в виду, как использовать его, как java. например: double a = новый двойной [длина] [длина] [длина]; – Cery

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