2012-03-15 3 views
19

Я хотел бы знать, как объявить 2 одномерных массивы в Java Script фиксированного то длинами как,Как объявить двумерные массивы в javascript?

var array = new Array[this.rows, this.columns]; 

после этого я хотел бы получить длину каждого измерения, как,

array[0].length; // i am assuming this would give me the first dimension like in C# array.GetLength(0); 
array[1].length; // i am assuming this would give me the second dimension like in C# array.GetLength(1); 

спасибо, спасибо.

ответ

30

Быстрый пример того, что @SLaks имеет в виду с зубчатыми массивами. Вы в основном помещаете массив в массив. В приведенном ниже примере показан один способ сделать массив размером 100x100.

var arr = []; 
for(var x = 0; x < 100; x++){ 
    arr[x] = [];  
    for(var y = 0; y < 100; y++){ 
     arr[x][y] = x*y;  
    }  
} 

console.log(arr[10][11]); 

Live Demo

Этот метод является очень гибким, например arr[4] может иметь массив индексируется до 10, и arr[5] может иметь массив с 1 значение, или даже быть совершенно другой тип, такой как строка или номер.

+0

Привет, Локтар спасибо, мне нравится демо, и как мне получить размеры массива? первое измерение и второе измерение? –

+1

@ Kathy Предполагая, что длины массива равны по количеству (подумайте о контрольной доске 8x8), вы можете сделать 'arr.length' и' arr [0] .length'. Это будет «ширина» и «высота» – Loktar

3

В отличие от C#, Javascript не поддерживает многомерные массивы.

Вместо этого вы можете использовать вложенные («зубчатые») массивы.

+0

спасибо Slaks, и как я могу получить длину каждого измерения? –

+2

Длина каждого измерения невелика. Это всего лишь массив массивов; каждый массив имеет свою длину. – SLaks

+1

_ «Javascript не поддерживает многомерные массивы» _ - Но массив массивов обеспечивает эквивалент многомерных массивов, поэтому вы можете сказать, что JavaScript поддерживает многомерные массивы (даже если они не _truly_ многомерные, я думайте, что ваше первое предложение не является правдоподобным в этой форме :)). https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Predefined_Core_Objects#Multi-Dimensional_Arrays (BTW Я думаю, что ваш ответ действительно не отвечает на вопрос.;)) – Sk8erPeter

1

Вложенный массив 3x3 (из undefined):

var arr = new Array(3); 
 
for (var i = 0; i < arr.length; ++i) { 
 
    arr[i] = new Array(3); 
 
} 
 

 
console.log(arr);


modle13 заметил, что вы ограничены фиксированным размером подрешетки, так вот один быстрый tweak, чтобы обойти это:

var nestedSizes = [3,5,1,4]; 
 
var arr = new Array(nestedSizes.length); 
 
for (var i = 0; i < arr.length; ++i) { 
 
    arr[i] = new Array(nestedSizes[i]); 
 
} 
 

 
console.log(arr);

+0

Что случилось с моим ответом? – c24w

+0

Работает для моих целей: учебник по тик-таку-носу. Конкуренция может заключаться в том, что вы ограничены одним и тем же числом индексов для каждого вспомогательного массива. – modle13

2

В JavaScript:

var Matrix = function (rows, columns) { 
    this.rows = rows; 
    this.columns = columns; 
    this.myarray = new Array(this.rows); 
    for (var i=0; i < this.columns; i +=1) { 
     this.myarray[i]=new Array(this.rows) 
    } 
    return this.myarray; 
} 

var m = new Matrix(2,2); 
m; // [[undefined, undefined], [undefined, undefined]]; 

var m2 = new Matrix(3,3); 
m2; // [[undefined, undefined, undefined], [undefined, undefined, undefined], [undefined, undefined, undefined]] 
-3

вы не могли бы просто сделать что-то вроде этого?

var x = new Array(4);    #1st array, array of arrays        
y = new Array(1, 4, 2, 0);  #2nd dimension of arrays, an array of values     
z = new Array(4, 8, 3, 9);  #^^^      
a = new Array(7, 0, 2, 4);  #^^^     
t = new Array(9, 0, 3, 1);  #^^^ 

затем доступа 7 (1-е значение) в массиве а (3) можно ввести:

var example = x.3.1 

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

+2

ошибка ... нет это не сработает. У вас здесь 5 различных массивов, которые никоим образом не связаны. –

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