2012-03-15 30 views
19

Tôi muốn biết làm thế nào để khai báo 2 mảng chiều trong kịch bản java cố định một cái gì đó dài như thế nào,Làm cách nào để khai báo mảng hai chiều trong javascript?

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

sau đó tôi muốn để có được độ dài của mỗi chiều như thế nào,

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); 

bất kỳ trợ giúp được đánh giá cao, cảm ơn.

Trả lời

30

Ví dụ nhanh về những gì @SLaks đề cập đến với các mảng bị lởm chởm. Về cơ bản bạn đặt một mảng trong một mảng. Ví dụ dưới đây cho thấy một cách để tạo một mảng có kích thước 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

Phương pháp này rất linh hoạt ví dụ arr[4] có thể có một mảng lập chỉ mục đến 10, và arr[5] có thể có một mảng với 1 giá trị, hoặc thậm chí còn là một loại hoàn toàn khác nhau như: một chuỗi hoặc số.

+0

Hi Loktar cảm ơn bạn Tôi thích bản demo và làm thế nào để tôi có được kích thước của mảng? thứ nguyên đầu tiên và thứ nguyên thứ hai? –

+1

@Kathy Giả sử chiều dài mảng bằng nhau về số (nghĩ về bảng kiểm tra 8x8), bạn có thể thực hiện 'arr.length' và' arr [0] .length'. Đó sẽ là "chiều rộng" và "chiều cao" – Loktar

3

Không giống như C#, Javascript không hỗ trợ mảng đa chiều.

Thay vào đó, bạn có thể sử dụng mảng lồng nhau ("răng cưa").

+0

cảm ơn bạn Slaks và làm thế nào để tôi có được chiều dài của mỗi thứ nguyên? –

+2

Không có chiều dài của mỗi chiều. Nó chỉ là một mảng các mảng; mỗi mảng có chiều dài riêng. – SLaks

+1

_ "Javascript không hỗ trợ mảng đa chiều" _ - Nhưng mảng mảng cung cấp tương đương với mảng đa chiều, vì vậy bạn có thể nói JavaScript DOES hỗ trợ mảng đa chiều (ngay cả khi chúng không _truly_ đa chiều, tôi nghĩ câu đầu tiên của bạn không đúng _truly_ trong biểu mẫu này :)). https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Predefined_Core_Objects#Multi-Dimensional_Arrays (BTW Tôi nghĩ câu trả lời của bạn không thực sự trả lời câu hỏi.;)) – Sk8erPeter

1

Một mảng 3x3 lồng nhau (của undefined):

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

 
console.log(arr);


modle13 nhận xét rằng bạn đang giới hạn trong một kích thước cố định phụ mảng, vì vậy đây là một cách nhanh chóng tinh chỉnh để giải quyết vấn đề đó:

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

Có gì sai với câu trả lời của tôi? – c24w

+0

Làm việc cho mục đích của tôi: hướng dẫn React tic-tac-toe. Một tranh chấp có thể là bạn bị giới hạn ở cùng một số chỉ mục cho mỗi mảng phụ. – modle13

2

Trong 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

có thể giúp bạn không chỉ làm một cái gì đó như thế này?

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);  #^^^ 

sau đó để truy cập 7 (giá trị 1) trong mảng một (3), bạn có thể gõ:

var example = x.3.1 

nếu công việc này wont xin vui lòng cho tôi biết cos này là những gì tôi đã nói và những gì im hiện đang sử dụng để lập trình trò chơi của tôi

+2

err ... không điều này sẽ không hoạt động. Những gì bạn có ở đây là 5 mảng riêng biệt không liên quan đến nhau. –

Các vấn đề liên quan