JavaScript 入門指南 - 陣列

陣列 (array) 是一種比較複雜的物件 (object) ,可以有多個不同資料型態 (data type) 的元素




有兩種方式可以建立陣列,第一種是利用陣列的字面常數,也就是中括弧圍起來的內容,裡頭用逗號分開每個元素
var a1 = [0.321, "to", 22, "spoon", true];


如果中括弧裡面沒有放任何東西,就會建立一個空陣列,也就是沒有元素的陣列
var a2 = [];


另一種建立陣列的方式是用陣列的建構子 (constructor) ,這要用 new 關鍵字 (keyword) ,小括弧內用逗號區隔的為陣列元素
var a3 = new Array(0.321, "to", 22, "spoon", true);


上面 a1a3 會得到具有相同內容的陣列。


存取陣列中的元素則是利用中括弧與元素索引值,例如
var a1 = [0.321, "to", 22, "spoon", true];
var i;
for (i in a1) {
    document.write(a1[i] + "<br / >");
}


for-in 迴圈 (loop) 中的 i 會依序取得 a1 的索引值,然後利用 a1[i] 取得每一個元素。


以下為陣列的常用方法 (method)
方法描述
toString()回傳物件的字串形式
valueOf()回傳物件的數值
concat([item1 [, item2 [, …]]])連接各陣列
join(separator)連接陣列中各個元素
pop()移除陣列中最後一個元素,並回傳這個元素值
push([item1 [, item2 [, …]]])將新元素加入到陣列的最後面,並回傳陣列的新長度
reverse()倒轉陣列元素的順序
shift()移除陣列中第一個元素,並回傳這個元素值
slice(start, end)拆解陣列,並回傳索引值範圍的子陣列
sort(comparefn)排序陣列中的元素,可提供排序函數為參數
splice(start, deleteCount [, item1[, item2[ , …]]])加入或刪除元素
unshift([item1 [, item2 [, …]]])將新元素加入到陣列的最前面,並回傳陣列的新長度


陣列在 JavaScript 中很方便也很常用,我們舉一例如下
<html>
<head>
<title>Array Demo</title>
<script>
function run() {
    var a = [];
    var i;
    for (i = 1; i < 101; i++) {
        a.push(i);
    }
    var sum = 0;
    for (i in a) {
        sum += a[i];
    }
    
    var d = document.getElementById("display");
    d.innerHTML = "1 + 2 + 3 + ... + 100 = " + sum;
}
</script>
</head>
<body onload="run()">
<div id="display"></div>
</body>
</html>

<!-- 《程式語言教學誌》的範例程式
      http://pydoing.blogspot.com/
      檔名:arraydemo.html
      功能:示範 JavaScript 程式
      作者:張凱慶
      時間:西元 2012 年 12 月 -->


瀏覽器開啟如下



此例的第一個 for 迴圈建立一個整數 1 到 100 的陣列,第二個 for-in 迴圈將陣列中的所有整數累加起來,最後將總和顯示在 id 屬性為 display 的 HTML 元素中。


現在來想想怎麼來建立密碼表,首先要先建立英文小寫字母表,很簡單,我們由字串 (string) 轉成陣列就行了
var alph = "abcdefghijklmnopqrstuvwxyz".split("", 26);


字串的 split() 方法可將字串中的子字串轉化為陣列,第一個參數 (parameter) 為分隔符號,此利用空字串 "" ,因此用每個字母當子字串,第二個參數為陣列元素的數量。


這樣 alph 就會是一個英文小寫字母表的陣列。有了英文字母表,我們攪亂一下陣列裡頭元素的順序就是密碼表了,可是陣列沒有內建攪亂的方法說,這時候我們需要洗牌演算法 (algorithm) 囉!


中英文術語對照
陣列array
物件object
資料型態data type
建構子constructor
迴圈loop
方法method
字串string
參數parameter
演算法algorithm


您可以繼續參考
網頁軟體開發


相關目錄
回 JavaScript 入門指南
回 JavaScript 教材
回首頁


參考資料
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Predefined_Core_Objects
http://www.w3schools.com/JS/js_obj_array.asp
http://www.tutorialspoint.com/javascript/javascript_arrays_object.htm

沒有留言: