I 3J avaScript sam plecode M tciosofl nternet Explorer HË 3]
Sử dụng các mảng đa chiều
Các m ảng mà chúng ta đã thấy cho đến bây giờ trong chương này đơi khi được gọi là các m ảng một chiều (one-dimensional array). Nếu bạn nghĩ về m ột m ảng như là bản đồ thị chứa các hàng và cột, những mảng một chiều này sẽ chỉ cĩ một cột như được m inh họa trong h ìn h 4.3.
Một m ảng hai chiều (two-dimensional array) là m ột m ảng chứa hơn m ột cột khi hiển th ị dưới dạng một bảng đồ thị. Các m ảng hai chiều được
sử dụng khi bạn cần lưu trữ nhiều giá trị cho mỗi mục trong danh sách. H ình 4.4 m inh họa một m ảng hai chiều được th ể h iện bằng đồ thị.
Một m ảng ba chiều trơng giống như m ột h ìn h khối, vì m ột p h ầ n tử chiều sâu được th êm vào đồ thị. Dù tin hay khơng vẫn cĩ những th ứ chẳng h ạn như các m ảng 4 chiều và cao hơn nữạ Dù vậy chúng ta sống trong một th ế giới ba chiều và th ể hiện những tậ p hợp dữ liệu phức tạ p này bằng đồ th ị ngày càng trở nên khĩ.
Một số ngơn ngữ lập trìn h cho phép định ng h ĩa các m ảng đa chiều là một tín h n ăn g cốt lõi của ngơn ngữ. T h ật khơng m ay, Ja v a S c rip t khơng phải nằm trong số đĩ. Nếu bạn muốn đ ịn h n g h ĩa m ột m ảng đa chiều trong ứng dụng JavaS cript, bạn sẽ phải làrr việc bên tro n g những giới h ạn của m ảng một ckiềụ
Cĩ h ai kỹ th u ậ t m à bạn cĩ th ể sử dụng để mơ phỏng m ột m áng đa chiều trong JavaS cript:
t i Bạn cỏ thể tạo các mảng một chiền song song M Bạn cĩ thề tạo các mảng của các mảng C oỉum n 0. RowO: "Janmry* Row 1: "Fcbruaiy" R o w 2 ;. "March" R o w 3 : "A pril" Rơw4: "May** R ow 5; “June" Row 6- "Julý
Hình 4.3 Một mảng (một chiểu) đơn giản được biếu diễn bằng đổ thị.
118__________________________________ Chướng 4: Tổ chức dữ liệu thành các mảng
Column 0: Column 1: Column 2: Column 3:
RowO: "January" "Garnet" "Red" "Constancy"
Row 1: “February" "Amethyst" "Purple" "Sincerity"
Row 2: "March“ "Bloodstone* "Blue" "Courage"
Row 3: "April" "Diamond'1 "White/Clear" "Innocence"
Row 4: "May" "Emerald" "Green** "LơveM
Row 5: "June" "Pearl" "Cream” "Health"
Row 6: "July” "Ruby" "Red" “Contentment"
etc.
M ột trong những m ảng đầu tiên mà chúng ta đã xem x ét trong chương này là inột danh sách các th án g của năm . H ãy tiếp tục với ví dụ đĩ. C húng ta đã b ắt dầu với mảng một chiều sau đây:
var months = new Array (“January”, '‘February”, "March", “April", “May”, “June”, “July”, “August”,
"September”, “October”, “November” , “December”);
Ví dạ, chúng ta muốn ìập một danh sách 4 mục sau đây:
R Các tháng của năm
R Viên đá quí gắn một cách tượng trưng liên quan đến mỗi tháng B Màu của mỗi viên đá quí gắn một cách tượng trưng với tháng sinh. B Ý nghĩa liên hệ với mỗi viên đá quí
Bây giờ m ảng chỉ chứa các tháng; nếu chúng ta muốn tùy ý thêm ba th ứ khác m à chúng ta muốn vào danh sách, nĩ sẽ chỉ tă n g thêm sự bối rối cho m ảng và làm cho nĩ khĩ sử dụng hơn.
var months ~ new Array ("January”, "February” , "March”, ''April”, ■May", “June’', “July”, “August”,
"September”, “October", “November", “ December”, “Garnet", “Amethyst”, “Bloodstone or Aquamarine",
‘Diamond”, "Emerald”, “Pearl, Moonstone, or Alexandrite”,
"^uby”, “Sardoryx 0' Psndot”, “Sapphire",
“Opal or Tourmaline", "Topaz", ‘Turquoise or Lapis lazuli”,
“HeJ’’, ‘‘Pụplj", “Grter./Rad 01 Biue ’, ‘Whiie/Clbar ',
“Green", “Cream”, “Red”, “Light Green",
“Blue", “Many Colors’ , “Orange/Brown”, “Blue",
"Constancy’1, “Sincerity”, "Courage", "Innocence",
“ Love and success”, “Health and longevity”, “Contentment”, “Married happiness", “Clear thinking”, "Hope",
"Fidelity”, “ Prosperity”);
N hư bạn cĩ th ể thấy từ mã này, việc chỉ bổ sung thêm các danh sách vào m ảng hiện cĩ khơng phải là giải pháp tố t n h ất. Con người khơng chỉ khĩ đọc và hiểu mà nhà lập trìn h cũng sẽ phải cẩn th ậ n khi tạo chương trìn h sao cho mọi thứ khơng bị trộn lẫn.
Chúng ta cĩ th ể viết lại mảng bề bộn này sử dụng bốn m ảng song song như sau:
var months = new Array (“January”, "February”, “March”, “April", “May” , “June", "July”, "August”,
“September”, “October", “November”, “December”);
120 Chướng 4: Tổ chức dữ liệu thành các mảngvar stones = new Array (“Garnet", "Amethyst”, var stones = new Array (“Garnet", "Amethyst”,
“Bloodstone or Aquamarine”, “Diamond", “Emerald", “Pearl, Moonstone, or Alexandrite”, "Ruby",
“Sardonyx or Peridot", “Sapphire”, "Opal or Tourmaline", “Topaz”, “Turquoise or Lapis lazuli");
var colors = new Array (“Red", “Purple”, "Green/Red or Blue", “White/Clear", “Green”, “Cream", “Red” , “Light Green” , “Blue” , “Many Colors”, “Orange/Brown”, “Blue");
var meaning = new Array (“Constancy", "Sincerity", “Courage”, “Innocence” “Love and success”, “Health and longevity”, “Contentment”, “Married happiness", "Clear thinking” , “Hope”, “Fidelity”, “ Prosperity”);
Các phần tử trong từng m ảng tương hợp chính xác với các index y như th ế trong các m ảng khác, do đĩ ví dụ bạn muốn tìm hiểu m ột điều gì đĩ về th á n g th ứ 7 của năm . (Hãy nhớ rằn g các m ảng b ắ t đầu tại index 0, do đĩ th á n g th ứ 7 của năm được mơ tả tạ i số p h ần tử 6).
document.write (“The seventh month is <b>” + months[6]); document.write (“</b>. Its birthstone is <b>”);
document.write (stones[6] + “</b>. The “ + stones[6]);
document.write (“ is a <b>” + colors[6] + “</b> colored stone, “); document.write (“and it means <b>” + meaning[6] + “</b>”); document.write (" traditionallỵ<br>”);
Theo cách này chúng ta cĩ th ẽ lưu trữ một số cột th ơng tin vê mồi th án g bằng việc định nghĩa chúng trong các m ản g riên g của chúng. Chúng ta cĩ th ể th ấy k ế t quả của m ã này trong ả n h chụp m àn h ìn h trìn h duyệt web như trong h ìn h 4.5.
C h ư ơ n g 4 : Tổ chức dữ liệu thành các mảng 121
FivoflUc loolc H*lp
• ________ ______ _ _ .................................•