1. 程式人生 > >數組的學習(一)

數組的學習(一)

之間 fine 圖片 pos 情況 創建一個數組 spl 大於 mes

5.2 Array類型

創建數組的基本方式有兩種:

方式一:使用Array構造函數(new操作符也可省略不寫)。

1     var colors = new Array();  //創建一個空數組
2     var colors = new Array(20); //創建一個length值為20的數組
3     var colors = new Array("red","black","blue","pinl"); //創建一個包含3個字符串的數組
4     console.log(colors);

方式二:使用數組字面量表示法。

1     var colors = ["green","blue","pink"];  //創建一個包含3個字符串的數組
2     var names = [];//創建一個空數組
3     console.log(colors);
4     console.log(names);
技術分享圖片
    var group = [{name: "lily", age: 18}, {name: "sam", age: 20}]; //創建包含兩個對象的數組。
    mgroup();
    function mgroup() {
        for (var i = 0; i < group.length; i++) {
            console.log(group[i]);
        }
    }
技術分享圖片

數組之:索引和length

數組之索引:

     var colors = ["green", "blue", "pink"];
     colors[3] = "brown";  //索引值超過數組現有項數,數組就會自動增加到該索引值加1的長度(比如該示例中:索引是3,因此數組長度就是4)
     colors[7] = "red"; //索引是7 數組是8
     console.log(colors);

數組之length:

技術分享圖片
    //當length屬性值小於數組項數時:移除
    var colors = ["green", "blue", "pink"];//創建一個包含3個字符串的數組
    colors.length = 2;  //length屬性設置為2(小於數組項數)會移除最後一項(位置為2的那一項),再訪問colors[2]就會顯示undefined
    console.log(colors);
    console.log(colors[2]);

    //當length屬性值大於數組項數時:新增
    var colors = ["green", "blue", "pink"];//創建一個包含3個字符串的數組
    colors.length = 4;  //length屬性設置為4(大於數組項數),則新增的每一項會取得undefined值
    console.log(colors);
    console.log(colors[3]); //undefined


    //利用length屬性在數組末尾添加新項
    var colors = ["green", "blue", "pink"];//創建一個包含3個字符串的數組
    colors[colors.length] = "red"; //在位置3添加一種顏色
    colors[colors.length] = "black";//在位置4再添加一種顏色
    console.log(colors);    //(5) ["green", "blue", "pink", "red", "black"]
技術分享圖片

由於數組最後一項的索引值始終是length-1,因此下一個新項的位置就是length。每當在數組末尾添加一項後,其length屬性都會自動更新以反應這一變化。

5.2.1 檢測數組

方法有二分別為:

技術分享圖片
   // instanceof操作符的問題在於:假定只有一個全局執行環境
    if (colors instanceof Array) {
        console.log("Yes,array");
    }

    //ECMAscript5新增Array.isArray()方法。這個方法的目的是最終確定某個值到底是不是數組,而不管他是在哪個全局執行環境中創建的。
    if (Array.isArray(colors)) {
        console.log("is array");
    }
技術分享圖片

5.2.3 棧方法

push()方法可以接收任意數量的參數,把它們逐個添加到數組末尾,並返回修改後的數組長度。

     var colors = new Array();  //創建一個數組
     var count = colors.push("red", "black", "green");  //推入三項
     console.log(colors);
 
     count = colors.push("blue");    //推入另一項
     console.log(colors);

pop()方法則從數組末尾移除最後一項,減少數組的length值,然後返回移除的項。

     var item = colors.pop(); //取得最後一項
     console.log("數組最後一項的值為:" + item);
     console.log(colors);

5.2.6 操作方法

concat()方法可以基於當前數組中的所有項創建一個新數組。具體來說,這個方法會創建當前數組一個副本,然後將接收到的參數添加到這個副本的末尾,最後返回新構建的數組。在沒有給concat方法傳遞參數的情況下,它只是復制當前數組並返回副本。

    var colors = ["red","blue"];
    var colors2 = colors.concat("green","black",["pink","brown"]);
    console.log(colors2);

slice()方法,它能夠基於當前數組中的一或多個項創建一個新數組。slice()方法可以接受一或是二個參數,即要返回項的起始和結束位置。註意slice()方法不會影響原始數組。

  • 一個參數:slice()方法返回從該參數指定位置開始到當前數組末尾的所有項。
  • 二個參數:slice()方法則返回起始和結束位置之間的項-但不包括結束位置的項
    var colors = ["orange", "blue", "green", "black", "pink", "white", "brown"];
    var colors2 = colors.slice(1);  //接受一個參數
    var colors3 = colors.slice(1, 5); //接受二個參數
    console.log(colors2);
    console.log(colors3);

splice()方法算是最強大的數組方法了,他有很多用法。splice()主要的用途是向數組的中部插入項,但使用這種方法的方式則有如下3種:

  • 刪除:可以刪除任意數量的項,只需指定2個參數:要刪除的第一項的位置和要刪除的項數。例如:splice(0,2)會刪除數組中的前兩項。
  • 插入:可以向指定位置插入任意數量的項,只需提供三個參數:起始位置、0(要刪除的項數)和要插入的項(任意多個項)。
  • 替換:可以向指定位置插入任意數量的項,且同時刪除任意數量的項,只需指定3個參數:起始位置、要刪除的項數和要插入的任意數量的項。插入的項數不必與刪除的項數相等。
技術分享圖片
    //刪除
    var colors = ["red", "orange", "blue"];
    var removed = colors.splice(0, 1); //刪除第一項
    console.log(colors);   //(2) ["orange", "blue"]
    console.log(removed); //["red"]  返回的數組中只包含一項

    //插入
    var removed = colors.splice(1, 0, "pink", "white"); //從位置1開始插入兩項
    console.log(colors);  //(4) ["orange", "pink", "white", "blue"]
    console.log(removed); //返回的是一個空數組
    
    //替換
    var removed = colors.splice(1, 1, "purple", "black");  //插入兩項,刪除一項(pink)
    console.log(colors);    // ["orange", "purple", "black", "white", "blue"]
    console.log(removed);   //["pink"] 返回的數組中只包含一項

數組的學習(一)