2011-02-10 4 views
5

Сегодня я слышал, что можно создать мульти - одномерный массив в JS, используя следующий синтаксис:Javascript создания многомерного массива Синтаксис

var a = new Array(3,3); 
a[2][2] = 2; 
alert(a[2][2]) 

Однако это не работает в опере. Я где-то ошибаюсь?

+2

Это одна из причин, почему ** не ** использовать 'новый Array()'. Если вы передадите только один аргумент, вы действительно установите длину массива в этот аргумент. Но если вы передаете несколько, он генерирует массив, содержащий эти элементы. Нет необходимости использовать 'Array()', вместо буквенного обозначения вместо '[]'. –

ответ

7

Да, вы где-то не правы. var a = new Array(3,3); означает то же, что и var a = [3,3];. Он создает массив с двумя членами: номер 3 и номер 3.

Конструктор массивов является одной из худших частей языка JavaScript. Учитывая одно значение, он определяет длину массива. Учитывая несколько значений, он использует их для инициализации массива.

Всегда используйте синтаксис var a = [];. Он является последовательным (а также более коротким и легким для чтения).

Синтаксис короткого замыкания для создания массива массивов отсутствует. Вы должны строить каждый отдельно.

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

так что ответ? –

+0

Я считаю, что OP пыталась создать многомерный массив с этим синтаксисом. EDIT: * Этот комментарий больше не уместен. * – user113716

+0

Вы правы. Мне сказали, что он создает многодисковый массив. Спасибо за хороший и ясный ответ. – Dan

2

Код, который вы отправили, представляет собой массив, состоящий из двух целых чисел. Затем вы пытаетесь рассматривать целое число как массив.

mv = new Array(); 
mv[0] = new Array(); 
mv[0][0] = "value1-1"; 
mv[0][1] = "value1-2"; 

mv[1] = new Array(); 
mv[1][0] = "value2-1"; 
mv[1][1] = "value2-2"; 

Невозможно напрямую создать экземпляр многомерного массива.

+0

Во втором блоке, вы не имеете в виду 'mv [1] [0]' и 'mv [1] [1]'? – JLewkovich

+0

@JL Yep, исправлено –

+0

Единственный скрипт, который решил его для меня с 3-мя размерами ... Thx. – JanBorup

0

вы хотите создать массив массивов, но вы создаете массив с 2-х элементов:

var a = new Array(3,3); 
// a = [3,3] 

, если вы хотите создать многомерный массив, вы должны думать в терминах массива массивы.
таким образом, 2-мерный массив (или матрица) будет определяться как:

var a = [[],[]];//or var a = new Array([],[]); 
//or if you want to initialize the matrix : 
var b = [ 
    [1,2], 
    [3,4] 
]; 
Смежные вопросы