JavaScript學習_第6章_數組的聲明與使用

--概述

    JS的數組和PHP相似,都是不定長不限制數據類型的(數組的成員可以是不同的數據類型)。

    JS中,只要是批量的數據,都使用數組存儲。

    JS的數組都是通過數組序號訪問的(類似於PHP中的索引數組),序號從0開始

   

 

數組的作用

    批量的處理數據。

 

數組的聲明

 --快速聲明方式

  • 1維數組

    var 數組名 = [成員1,成員2,成員3,......];

例如:

  1. var names = ["張三","李四","王五"]; 
  • 聲明數組的數組(2維數組)

例如:

  1. var arg = [ 
  2.               ["aa","bb"], 
  3.               ["11","22"], 
  4.               ["33","dd"
  5.           ];  //聲明瞭1個2維數組arg,裏面包含3個元素,每個元素都是數組 

     如果要輸出"22",使用arg[1][1];

 

--使用Array對象聲明數組

  • 創建特定值的數組

    var 數組名 = new Array("成員1","成員2",....)

  • 創建空數組

    var 數組名 = new Array(成員個數)

    使用這個能創建個數等於成員個數的空數組。

 

數組的有用屬性

--length屬性

    返回一個整數值,這個整數比數組中所定義的最高位元素的下標大 1。

說明:

    因爲一個數組中的元素並不一定是連續的,所以 length 屬性也並不一定就等於數組中的元素個數。例如,在下面的數組定義中,my_array.length 中就包含 7,而不是 2:

  1. var my_array = new Array( ); 
  2. my_array[0] = "Test"
  3. my_array[6] = "Another Test"

    如果 length 屬性被賦予了一個比原先值小的數值,那麼數組就被截斷,所有數組下標等於或者大於 length 屬性的新值的元素都會被丟失。

    如果 length 屬性被賦予了一個比原先值大的數值,那麼數組就被擴展,且所有新建元素都被賦值爲 undefined

 

 數組的操作

     不管用哪種方式聲明的數組,它都是一個對象,可以用數組對象的方法來處理。

--打印數組

    打印函數中直接使用數組名就可以打印整個數組。

例如:

  1. var arr = [2,3,4,5]; 
  2. document.write(arr);   //就打印出了2,3,4,5 

 

--sort方法

    arrayobj.sort(sortfunction)

    返回一個元素已經進行了排序的 Array 對象。

    參數

    arrayObj:必選項。任意 Array 對象。

    sortFunction:可選項。是用來確定元素順序的函數的名稱。如果這個參數被省略,那麼元素將按照 ASCII 字符順序進行升序排列。

    說明

    sort 方法將 Array 對象進行適當的排序;在執行過程中並不會創建新的 Array 對象。

    如果爲 sortfunction 參數提供了一個函數,那麼該函數必須返回下列值之一:

  • 負值,如果所傳遞的第一個參數比第二個參數
  • 零,如果兩個參數相等。
  • 正值,如果第一個參數比第二個參數大。

 

 

 

--關於數組堆棧

    由於JS是弱類型語言,所以JS的數組可以模擬堆棧。

    push,pop方法中,數組末尾被認爲是棧頂。

    unshift,shift方法中,數組頭部認爲是棧頂。

 

 

--push方法

    arrayObj.push([item1 [item2 [. . . [itemN ]]]])

    將新元素添加到一個數組尾,並返回數組的新長度值。

    參數:   

  • arrayObj:必選項。一個 Array 對象。
  • item, item2,. . . itemN:可選項。該 Array 的新元素。

    push 方法將以新元素出現的順序添加這些元素。如果參數之一爲數組,那麼該數組將作爲單個元素添加到數組中。

 

--pop方法

    arrayObj.pop( )   

    移除數組中的最後一個元素並返回該元素。

    參數:   

    arrayObj:必選的。 arrayObj 引用是一個 Array 對象。

    說明:

    如果該數組爲空,那麼將返回 undefined

 

--unshift方法

    arrayObj.unshift([item1[, item2 [, . . . [, itemN]]]])   

    將指定的元素插入數組開始位置並返回該數組。 

    參數:

    arrayObj:必選項。一個 Array 對象

    item1, item2,. . .,itemN:可選項。將插入到該 Array 開始部分的元素。

    說明:

    unshift 方法將這些元素插入到一個數組的開始部分,所以這些元素將以參數序列中的次序出現在數組中。

 

--shift方法

    arrayObj.shift( )

    移除數組中的第一個元素並返回該元素。

    參數:   

    arrayObj:必選的。 arrayObj 引用是一個 Array 對象。

    說明:

    shift 方法可移除數組中的第一個元素並返回該元素。

 

--concat方法

    array1.concat([item1[, item2[, . . . [, itemN]]]])   

    返回一個新數組,這個新數組是由兩個或更多數組組合而成的。   

    參數:

    array1:必選項。其他所有數組要進行連接的 Array 對象。

    item1,. . ., itemN:可選項。要連接到 array1 末尾的其他項目。

    說明:

    concat 方法返回一個 Array 對象,其中包含了 array1 和提供的任意其他項目的連接。

    要加的項目(item1 … itemN)會按照從左到右的順序添加到數組。如果某一項爲數組,那麼添加其內容到 array1 的末尾。如果該項目不是數組,就將其作爲單個的數組元素添加到數組的末尾。

以下爲從源數組複製元素到結果數組:

  • 如果一個對象引用被從 item1 或 item2 複製到結果中,那麼結果中的對象引用仍然指向同一個對象。對該對象的改變將同時反映在兩個數組中。
  • 對於連接到新數組的數值或字符串,只複製其值。一個數組中值有改變並不影響另一個數組中的值。
  1. function ConcatArrayDemo(){ 
  2.    var a, b, c, d; 
  3.    a = new Array(1,2,3); 
  4.    b = "JScript"
  5.    c = new Array(42, "VBScript); 
  6.    d = a.concat(b, c); 
  7.    // 返回數組 [1, 2, 3, "JScript", 42, "VBScript"] 
  8.    return(d); 

 

--join方法

    arrayObj.join(separator)

    返回字符串值,其中包含了連接到一起的數組的所有元素,元素由指定的分隔符分隔開來。

    參數:

    arrayObj:必選項。Array 對象。

    separator:必選項。是一個 String 對象,作爲最終的 String 對象中對數組元素之間的分隔符。如果省略了這個參數,那麼數組元素之間就用一個逗號來分隔。

    說明:

    如果數組中有元素沒有定義或者爲 null,將其作爲空字符串處理。

    實例:

  1. function JoinDemo(){ 
  2.    var a, b; 
  3.    a = new Array(0,1,2,3,4); 
  4.    b = a.join("-"); 
  5.    return(b); 
  6. }  //b是個字符串,值是"0-1-2-3-4" 

 

--reverse方法

    arrayObj.reverse( )

    反轉一個數組,在執行過程中改變原數組,這個方法並不會創建一個新的 Array 對象。

 

--slice方法

    arrayObj.slice(start, [end])

    返回一個數組的一段。

    參數:

    arrayObj:必選項。一個 Array 對象。

    start:必選項。arrayObj 中所指定的部分的開始元素是從零開始計算的下標。

    end:可選項。arrayObj 中所指定的部分的結束元素是從零開始計算的下標。

    說明

    slice 方法返回一個 Array 對象,其中包含了 arrayObj 的指定部分。

    slice 方法一直複製到 end 所指定的元素,但是不包括該元素。如果 start 爲負,將它作爲 length + start處理,此處 length 爲數組的長度。如果 end 爲負,就將它作爲 length + end 處理,此處 length 爲數組的長度。如果省略 end ,那麼 slice 方法將一直複製到 arrayObj 的結尾。如果 end 出現在 start 之前,不復制任何元素到新數組中。

     實例:

  1. var a, b; 
  2. a = new Array(0,1,2,3,4); 
  3. b = a.slice(0,3);  //b是a數組的從0到2,3個元素 
  4. document.write(b); //將輸出0,1,2 

     start,end可以是負值,如果爲負值將被加上length。例如:

  1. var a, b; 
  2. a = new Array(0,1,2,3,4); 
  3. b = a.slice(0, -1); //從0開始,到5+(-1)=4之前(不包括4) 
  4. document.write(b); //可以直接理解爲從0一直到最後1個之前 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章