Mảng nhiều chiều trong javascript

2,923 views
Skip to first unread message

Thanh Le

unread,
Nov 17, 2011, 2:41:56 AM11/17/11
to Hỏi đáp
var menu = new Array([2], [10]);
var k = 0;
for (i = 0; i < 2; i++)
for (j = 0; j < 10; j++) {
menu[i, j] = k;
k++;
}

for (i = 0; i < 2; i++)
for (j = 0; j < 10; j++) {
alert("menu["+i+","+j+"]"+ menu[i,j]);
}
hic hic sao cái này chạy nó ra kết quả thấy kì kì
menu[0,0]=10;
menu[0.1]=11;
...
menu[0,9]=19;
menu[1,0]=10;
menu[1.1]=11;
...
menu[1.9]=19;
kêt quả nó bị lặp 2 lần hic hic làm sao đây
Thanh muốn
menu[0,0]=0;
menu[0.1]=1;
...
menu[1,9]=19;
Viết hoài mà nó ra lung tung có rãnh thì giải thích giùm Thanh tý hehe

Huan Vu Le

unread,
Nov 17, 2011, 6:50:18 PM11/17/11
to hoidap-a...@googlegroups.com
Chào Thanh,
Góp ý chút: 
dòng alert("menu["+i+","+j+"]"+ menu[i,j]);  
Thanh có thể ghi thành
document.write("menu[" + i + "," + j + "] = " + menu[i, j] + "<br />");
để có một cái nhìn tổng quát, chứ alert, bấm mỏi tay :)
 
Theo H được biết thì JavaScript không có khái niệm mảng nhiều chiều.

Khi Thanh khai báo 
var menu = new Array([2], [10]); 
Được trình duyệt hiểu như sau:
  • menu là một mảng gồm 2 phần tử
  • mỗi phần tử là một mảng
    • mảng thứ nhất gồm 1 phần tử là 2
    • mảng thứ hai gồm một phần tử là 10

             var k = 0; 
             for (i = 0; i < 2; i++) 
                 for (j = 0; j < 10; j++) { 
                     menu[i, j] = k; 
                     k++; 
                 } 
Được trình duyệt hiểu cách ghi menu[i, j] là menu[j] mà thôi. Như vậy menu[i, j] = k; được ghi lại thành menu[j] = k; 
             var k = 0; 
             for (i = 0; i < 2; i++) 
                 for (j = 0; j < 10; j++) { 
                     menu[j] = k; 
                     k++; 
                 } 
Vòng lặp đầu tiên của i sẽ tạo 10 phần tử cho mảng menu với giá trị từng phần tử trong mảng từ 0 đến 9
Vòng lặp thứ hai của i sẽ gán lại giá trị cho 10 phần tử này, nhưng k được tăng lên, do đó giá trị lúc này là từ 10 đến 19

Phần alert giá trị của Thanh
                 for (i = 0; i < 2; i++) 
                     for (j = 0; j < 10; j++) { 
                         alert("menu["+i+","+j+"]"+ menu[i,j]); 
                 } 
được trình duyệt hiểu là:

                 for (i = 0; i < 2; i++) 
                     for (j = 0; j < 10; j++) { 
                         alert("menu["+i+","+j+"]"+ menu[j]); 
                 } 
Như vậy, hai vòng lặp i đều in ra giá trị giống nhau là hoàn toàn chính xác.
 

Thanh muốn 
menu[0,0]=0; 
menu[0.1]=1; 
... 
menu[1,9]=19; 
==> Thanh viết LeThanhScript đi, javascript nó không hỗ trợ mảng nhiều chiều >:)

Thanh Le

unread,
Nov 17, 2011, 7:30:09 PM11/17/11
to Hỏi đáp

uhm, thanks hén, để tìm cách sử lý cái này, hehe Huân ko nói là mò
hoài rồi kekeke

Thanh Le

unread,
Nov 19, 2011, 12:47:08 AM11/19/11
to Hỏi đáp

Huân ơi, cho Thanh hỏi cái này tý
Thanh chuyễn sang sài cái mảng 1 chiều rồi
viết cái hàm như sau

function CreateHTML_MASV_HOCBONG(mangdk1,mangcon1,table) {
//var mangdk1 = new Array("SV1", "SV3", "SV4");
//var mangcon1 = new Array("MASV", "TENSV", "GIOITINH",
"NGAY SINH", "MALOP", "HOC BONG");
//var table = "XML.xml";
var mang = Where(mangdk1, mangcon1, table);
alert(mang);
var mangdk = new Array(1,2, 3, 5);
var k = 0;
var mangcon = new Array();
for (i = 0; i < mang.length; i++) {

for (j = 0; j < mangdk.length; j++) {
if ((i - mangdk[j]) % 6 == 0) {
mangcon[k] = mang[i];
k++;
}
}
}
var y = 0;
var str = "<table border='1' width='800'>";
for (j = 0; j < mangcon.length; j++) {
str += "<tr>";
for (i = 0; i < mangdk.length; i++) {
if(y % mangdk.length==0)
str += "<td>" + mangcon[j+i] + "</td>";
}

str += "</tr>";
y++;
}
str+="</table>"
combo.innerHTML = str;

}
vấn đề còn lại là truyền 3 cái tham số ở trên vào thôi
Cho Thanh hỏi là có truyền được ko vậy hichic

Thanh Le

unread,
Nov 21, 2011, 12:32:48 AM11/21/11
to Hỏi đáp
giải quyết xong rồi hén, cứ truyền bình thường thôi có điều nó chỉ
hiểu là biến thông thường, nhưng truy xuất giống như mảng thì nó cũng
hiều, có điều nó ko hỗ trợ các thuộc tính của mảng hehe

Thanh Le

unread,
Nov 22, 2011, 2:17:55 AM11/22/11
to Hỏi đáp

ak, Huân ởi, có vấn đề này suy nghĩ mãi ko ra, nên nhờ Huân tư vấn 1
chút xíu hehe
chuyện là như thế này đây:
Thanh có 4 cái button
làm sao trong javascript biết được button nào vừa được nhấn nhỉ
đang làm các nút di chuyển

Thanh Le

unread,
Nov 22, 2011, 2:56:46 AM11/22/11
to Hỏi đáp

đã giải quyết được rồi hehe
gọi 2 hàm vào cùng 1 sự kiện onclick 1 ghi nhận các buớc di chuyển, 1
thực thi có thế mà nghĩ mãi ko ra hehe

martin nguyen

unread,
Sep 25, 2015, 11:13:03 AM9/25/15
to Hỏi đáp
Thanh cho mình xin chỉ giáo đc ko.
mình cũng đang cần làm mảng 2 chiều với các button giống bạn nhưng mình yếu js wá không biết làm.
nếu đc cho mình xin source code 4 cái button dc ko? 
thanks nhiều 

Thanh Le

unread,
Sep 25, 2015, 12:45:10 PM9/25/15
to hoidap-a...@googlegroups.com
Hi martin 
Đã khá lâu mình không sử dụng javascript nên không còn lưu trữ các source code nữa. Nếu bạn có gặp rắc rối gì có thể nêu lên trên diễn đàn, mọi người sẽ góp ý
Thanks

Vào 22:13 Ngày 25 tháng 09 năm 2015, martin nguyen <iamlege...@gmail.com> đã viết:

--
Bạn nhận được thư này vì bạn đã đăng ký vào nhóm Google Groups "Hỏi đáp".
Để hủy đăng ký khỏi nhóm này và ngừng nhận email từ nhóm, hãy gửi email đến hoidap-alphapl...@googlegroups.com.
Để có thêm tùy chọn, hãy truy cập https://groups.google.com/d/optout.



--
Tên: Lê Minh Thanh
Liên hệ: 0907012207
Reply all
Reply to author
Forward
0 new messages