JavaScript概論(7)

JavaScript概論(7)

延續探討

陣列函數

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)


發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料