陣列 (Arrays) 是 JavaScript 提供的內建物件 (Built-in Object) 之一,其功能強大,可大幅度簡化你的程式碼。簡單的說,陣列是一個變數,但它可以儲存許多個值(可以是字串、數值,或是另一個物件),我們可以使用索引 (Index) 或下標(Subscript)來存取每一個元素的值,索引從 0 開始,例如陣列 A 的第一個元素為 A[0],第五個元素為 A[4],依此類推,這是最常用的陣列元素存取方式。(這部分和C語言是一致的。)
要使用陣列變數時,需先宣告,但可以不用設定陣列的元素個數,然後再把元素一個一個加進去,例如:
上述範例的原始檔如下:
亦可將元素值一次指定完成:
myArray = new Array("This is a test", 3.1415926, "The last element");
更簡單的方法,則是將陣列的各個元素放在中括弧內:
myArray = ["This is a test", 3.1415926, "The last element"];
若要一次印出陣列的所有內容來進行檢視,可用下列函式
其中 array 代表傳入函數的陣列,arrayName 則是此陣列的名稱,而 array.length 則是陣列 array 的元素個數。
例如,將 myArray 以上述的函式印出,可得
上述範例的原始檔如下:
在上述範例中,我們是將 listArray() 函式寫在 listArray.js 檔案之中,並使用下列方式來將此檔案導入上述網頁:
這種方式,可以讓我們在不同的網頁導入相同的函式,非常方便,請見後續章節有關於「自訂函數」的說明。
現在我們來看幾個比較完整的網頁,第一個是「每日一句」,可以從 15 個字串中,以亂數的方式挑出一個來顯示,如下:
上述範例的原始檔如下:
在上述範例中,所有的文字都存在一個陣列之中,每此重新載入網頁,就會經由亂數選取一個索引值來挑出句子,所以幾乎每次所選出來的句子都會不一樣。有關於亂數的產生,說明如下:
- Math.random() 會傳回一個介於 0 和 1 之間的亂數(純小數)。
- 因此 Math.random()*text.length 會產生一個介於 0 和 text.length 之間的亂數(帶有小數)。
- 最後,Math.floor(Math.random()*text.length) 會產生一個介於 0 和 text.length-1 之間的整數(包含頭尾),所以可以用來選取 text 陣列中的一個元素。
以同樣的方式,我們也可以在載入網頁時,每此都播放一首亂數選取的 MIDI 音樂檔,例如:
上述範例的原始檔如下:
利用同樣的方式,我們可以隨機產生一張照片,同時也播放隨機背景音樂,如下例:
上述範例的原始檔如下:
我們也可以利用兩段隨機產生的文字,來合成另一段文字,那麼文字完全重複的機率就會小很多,例如
上述範例的原始檔如下:
在上述範例中,我們在 加了一列 <meta http-equiv="Refresh" content="3">,這一列敘述會讓瀏覽器每 3 秒就重新載入網頁,因此上方的動態訊息就會每 3 秒變動一次。(當然,我們也用了 onMouseOver 和 onMouseUp 的事件,以便即時更換影像,達到趣味性的效果。)
如果我們利用陣列來存放影像物件,就會有快取的效果,換句話說,一旦知道影像物件的網址,JavaScript 會先將影像資料抓回來,等需要呈現影像時,就可以直接從客戶端電腦的記憶體中抓取,省卻了直接從網路抓取的時間,減少了使用者的等待時間,達到了「快取」(Cache)的效果。例如:
上述範例的原始檔如下:
在上述範例中,共用到42張照片,但 JavaScript 會立即將影像資料抓回來,而不會等到使用者點選時,才從網路把影像資料抓回來呈現。(不過這個範例要放在遠端的伺服器才能顯示其效果,若只是在客戶端點選範例,則所有影像資料都在硬碟中,不容易看出快取的效果。)
最後一個範例,是使用網頁來達到類似 Powerpoint 投影片的循序放映效果,請參考下列範例:
很顯然的,要儲存這些網頁的資訊來進行循序播放,當然是用陣列最方便。(本範例取材自清華大學計算機與通訊中心、周文正先生的作品,特此致謝。)
JavaScript 程式設計與應用:用於網頁用戶端