JavaScript

   


陣列 (Array)


二維及三維陣列

本站的初階教學已提及過陣列的應用, 相信大家都知道用陣列的好處, 就是容易管理大量變數, 如果變數再多的話, 可以考慮使用二維、三維甚至更多維的陣列。

初階教學所提及的其實是一維陣列, 一維陣列內的每個元素都是相同型態的變數, 但如果一個陣列的每個元素又是陣列的話, 就變成陣列內有陣列, 即是二維陣列了。 宣告一個二維陣列不須要特別的寫法, 只須運用 for 迴圈便可。

例子:宣告一個二維陣列, size 是 2 x 3, 同時指定它的數值

<script>
// Define a 2-D array
var d1 = 2;
var d2 = 3;
var array2d = new Array(d1);
for (i = 0 ; i < d2 ; i++) {
  array2d[i] = new Array(d2);
}
// assign values to array2d and display its content
for (i = 0 ; i < d1 ; i++) {
  for (j = 0 ; j < d2 ; j++) {
    array2d[i][j] = i + j
    document.write("<br>array2d[" + i + "][" + j + "] = " + array2d[i][j])
  }
}
</script>

例子說明:

  • var array2d = new Array(d1)

    定義 array2d 陣列, 長度為 d1, 就產生了 array2d[0] , array2d[1]。

  • array2d[i] = new Array(d2)

    為 array2d 的每一個元素, 再產生一個陣列, 長度為 d2, 產生出  array2d[0][0] , array2d[0][1] , array2d[0][2] , array2d[1][0] , array2d[1][1] , array2d[1][2]。

  • array2d[i][j] = i + j

    指定 array2d 陣列的內容, 如下表:

    array2d[i][j] j = 0 j = 1 j = 2
    i = 0 0 1 2
    i = 1 1 2 3

宣告三維陣列也是用相似的寫法。

例子:宣告一個三維陣列, size 是 2 x 3 x 4

<script>
// Define a 3-D array
var d1 = 2;
var d2 = 3;
var d3 = 4;
var array3d = new Array(d1);
for (i = 0 ; i < d2 ; i++) {
  array3d[i] = new Array(d2);
  for (j = 0 ; j < d3 ; j++) {
    array3d[i][j] = new Array(d3);
  }
}
// assign values to array2d and display its content
for (i = 0 ; i < d1 ; i++) {
  for (j = 0 ; j < d2 ; j++) {
    for (k = 0 ; k < d3 ; k++) {
      array3d[i][j][k] = i + j + k
      document.write("<br>array3d[" + i + "][" + j + "][" + k +"] = " + array3d[i][j][k])
    }
  }
}
</script>

例子說明:

  • array3d[i][j][k] = i + j + k

    指定 array3d 陣列的內容, 如下表:

    array[i][j][k] k = 0 k = 1 k = 2 k = 3
    i = 0 j = 0 0 1 2 3
    j = 1 1 2 3 4
    j = 2 2 3 4 5
    i = 1 j = 0 1 2 3 4
    j = 1 2 3 4 5
    j = 2 3 4 5 6

 

排列字串

我們可以用陣列的 sort() 方法來把陣列內的元素以 ASCII 碼由小至大排列

例子: 以 ASCII 碼排列

<script>
var student_name = new Array("Tom" , "Sam" , "John" , "Ben" , "Ton" , "34u");
student_name.sort();
document.write(student_name);
</script>

 

排列數目

如果陣列中的元素是數目, 而且要以數目大小來排列的話, 我們就要寫多小小東西。

例子: 以數目大小由小至大排列

<script>
function sort_num(a , b){
return(a - b);
}
var age = new Array(4000, 300 , 20 , 1 , -5);
age.sort(sort_num);
document.write(age)
</script>

說明:

  • sort_num(a , b)

    這個函數就是以數目大小來排列的關鍵了, 這種方法只有 NN3+ 和 IE5+ 支援, 不過老師始終不明白為何做這麼簡單的工作也要寫這些毫無意義的東西,   因此大家還是要死記這種方法。 參數 a 和 b 決定了 sort() 方法要由小至大, 還是大至小排列, 如果你要由大至小排列, 就將函數內寫成 return(b-a)。

例子: 以數目大小由大至小排列

<script>
function sort_num(a , b){
return(b - a);
}
var age = new Array(4000, 300 , 20 , 1 , -5);
age.sort(sort_num);
document.write(age)
</script>

例子: 就算陣列內的元素是數目型態, sort() 方法也會以 ASCII 碼來排列

<script>
var age = new Array(4000, 300 , 20 , 1 , 5);
age.sort();
document.write(age)
</script>

 

 

 

 







[到頁頂] [首頁] [速查表]