數組的學習(一)
阿新 • • 發佈:2018-01-23
之間 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"] 返回的數組中只包含一項
數組的學習(一)