# slice( )、splice( )、split( )有什麼不同? 當每次在處理array或string切割的時候,常常會忘記要用哪個方法來處理,因此以下將分別介紹slice( )、splice( )、split( )三者的使用時機及功能: ## slice(): 1.語法:Array.slice(begin , end) ### 2.使用時機:陣列(array)和字串(string) ### 3.說明:此方法會回傳一個新陣列物件,參數begin為切割的起始位置,例如:begin為1的話,則切割起始位置就從Array中index=1的元素(element)開始,結束位置為參數end,但截取的元素不包括index = end的元素,也就是說,截取的內容會從index = begin的元素到index = (end -1)的元素。而原本的陣列則不會被修改,故可以假設一個變數來接住回傳值,例如:let slicePart = Array.slice(begin , end)。以下將用實際例子補充說明。 ### 4.範例: ### ```javascript= const fruits = ['apple', 'banana', 'grape', 'lemon', 'papaya']; console.log(fruits.slice(2)); //只寫一個值預設會代入begin值,故分割範圍從index=2的元素到最後一個元素 // Expected output: Array ["grape", "lemon", "papaya"] console.log(animals.slice(2, 4)); //分割範圍從index=2到index=3的元素 // Expected output: Array ["grape", "lemon"] console.log(animals.slice(-2)); //如果引數值為負值,則代表index從最後往前數,最後一個元素為-1,倒數第二個為-2,以此類推 // Expected output: Array ["lemon", "papaya"] console.log(animals.slice(2, -1)); // Expected output: Array ["grape", "lemon"] console.log(animals.slice()); //如果未對參數賦值,則切割範圍就是從頭到尾的元素,等同未做切割 // Expected output: Array ["ant", "bison", "camel", "duck", "elephant"] ``` ### ## splice( ): 1.語法:Array.splice(begin , deleteCount , addItem1 , addItem2 , …) ### 2.使用時機:陣列(array) ### 3.說明:可以藉由此方法來刪除陣列內既有元素並且加入新元素(可加可不加)來改變一個陣列的內容,故原始陣列會被修改。參數begin表示由index = begin的元素開始刪除 ; 參數deleteCount表示刪除元素的數量,因此若deleteCount = 0,則不會進行刪除;addItem表示從index = begin前要加入到陣列的元素。 ### 4.範例: ### ```javascript= const letters= ['A', 'B', 'C', 'D']; months.splice(1, 0, 'E'); // Inserts at index 1 console.log(letters); // Expected output: Array ["A","E","B","c","D"] months.splice(4, 1, 'F'); // Replaces 1 element at index 4 console.log(letters); // Expected output: Array ["A", "E", "B", "C", "F"] ``` ## split( ): 1.語法:string.split(separator , limit) ### 2.使用時機:字串(string) ### 3.說明:此方法會回傳一個新陣列物件,字串中從separator進行分割,也就是分割點的意思;limit則代表分割出來後的最大數量。使用此方法後原本的字串不會被修改,故可以假設一個變數來接住回傳值。 ### 4.範例: ### ```javascript= const str = 'I went to bed quite late last night.'; const words = str.split(' '); console.log(words[3]); // Expected output: "bed" const letters= str.split(''); console.log(letters[8]); // Expected output: "o" const whole= str.split(); console.log(whole); // Expected output: Array ["I went to bed quite late last night."] ```