延續探討
陣列函數
Array.splice(start[, deleteCount[, item1[, item2[, …]]]])
函數說明:將元素插入陣列中或是刪除陣列中的元素。
傳入參數說明:
Start:插入的起始值,若數值大於陣列長度,則插入陣列最尾端,若起始值小於0,則從陣列最末端開始數,ex:-3則插入起始位置為陣列倒數第三個位置。
deleteCount:要刪除的陣列元素數量,0表示只插入元素不做刪除的動作。
Item1~n:要插入的元素。
範例:
var a = [1,2,3,4,5,6,7,8];
a.splice(4);
a.splice(1,2);
a.splice(1,1);
說明:最後a陣列為[1],第一行指派a陣列 [1,2,3,4,5,6,7,8]值,第二行取出a陣列第四個位置以後的所有元素,所以a陣列會變成[1,2,3,4],而splice的回傳值為a陣列取出的資料也就是 [5,6,7,8] ,第三行取出a陣列第一個位置以後兩個元素,所以a陣列會變成[1,4],而splice的回傳值為a陣列取出的資料也就是[2,3],最後一行取出a陣列第一個位置以後一個元素,所以a陣列會變成[1],而splice的回傳值為a陣列取出的資料也就是[4]。
範例2:
var a = [1,2,3,4,5];
a.splice(2,0,’Message’,’NAS’);
a.splice(2,2,[1,2],3);
說明:最後a陣列為[1,2,[1,2],3,3,4,5],第一行指派a陣列 [1,2,3,4,5,6,7,8]值,第二行傳入的第一個參數為2表示陣列會從第二個參數開始執行後面幾個參數要執行的動作,第二個參數為0表示沒有要取出的元素,所以splice的回傳值為[],第三、四個參數為’Message’、’NAS’,第二個參數以後的參數為要插入的參數,所以’Message’、’NAS’兩個參數都會被插入陣列,從第一個參數所指定的位置開始,也就是說’Message’、’NAS’兩個參數會被插入在a陣列的第二個位置,所以目前a陣列會變成[1,2, ‘Message’, ‘NAS’,3,4,5],第三行傳入的第一個參數為2表示陣列會從第二個參數開始執行後面幾個參數要執行的動作,第二個參數為2表示要從a陣列的第二個位置取出兩個元素,所以splice的回傳值為[‘Message’,’NAS’],第三、四個參數分別為一個陣列[1,2]以及一個數字3,第二個參數以後的參數為要插入的參數,所以[1,2]、3兩個參數都會被插入陣列,從第一個參數所指定的位置開始,也就是說[1,2]、3兩個參數會被插入在a陣列的第二個位置,所以最後a陣列會變成[1,2,[1,2],3,3,4,5]。
Array.push(element1[, …[, elementN]])
函數說明:從陣列最末端加入元素,並回傳新的長度
傳入參數說明:
element 1~n:要插入的元素。
Array .pop()
函數說明:從陣列最末端取出元素
範例:
var stack = [];
stack.push(1,2); //[1,2] return 2
stack.pop(); //[1] return 2
stack.push(3); //[1,3] return 2
stack.push([4,5]); //[1,3,[4,5]] return 3
stack.pop(); //[1,3] return [4,5]
stack.pop();
stack.pop(); //[] return 1
stack.pop(); // return undefined
說明:第一行指定stack為陣列,第二行新增元素1,2到陣列stack中,目前stack陣列內容為[1,2]所以push回傳值為2,接下來第三行pop stack陣列,回傳stack最末端的元素2,所以目前stack陣列內容為[1],第四行stack push了一個元素3進入陣列末端,所以目前陣列內容為[1,3]並且回傳目前陣列大小2,第五行又push了一個陣列[4,5]到stack陣列末端,所以目前stack陣列內容為[1,3,[4,5]],雖然這次傳的元素為陣列但是只算一個元素,回傳值為3,第六行pop了stack陣列,回傳stack最末端的元素,也就是剛剛第五行pop的[4,5]陣列,所以目前stack陣列內容為[1,3],第七行pop stack陣列,回傳stack陣列最後一個元素3,所以目前stack陣列內容為[1] ,第八行pop stack陣列,回傳stack陣列最後一個元素1,所以目前stack陣列內容為[],第九行pop stack陣列,回傳stack陣列最後一個元素,但是執行完第八行以後stack陣列裡面已經沒有任何元素了,所以pop的回傳結果會是undefined,然後stack陣列還是維持原本的陣列狀態[]。
結語: 這次的陣列函數說明都是有關陣列的元素插入以及取出元素的方法,在平常寫Javascript常常會使用到的函數。Javascript 常用的幾個array函數都講得差不多了,之後的文章應該會開始寫ECMAScript5特有的幾個常運的函數。
參考:JavaScript大全(ISBN:9789862764411)