Skip to main content

slice 與 splice

基本使用#

  1. slice 跟字串的 slice 類似,可以取出連續的子元素
  2. splice 可以直接修改陣列,在指定位置插入或是刪除元素

slice#

使用方式為:

arr.slice(起始位置,終止位置(不包含))

這邊值得注意的是最後取得的陣列不包含終止位置,假設是 slice(0, 5),實際上拿到的就會是 arr[0]+arr[1]+...+arr[4]

let arr = [0, 1, 2, 3, 4, 5]
console.log(arr.slice(0, 4)) // 從 index 0 ~ 3,所以是 [0,1,2,3]

如果你是要從某個 index 一路拿到結尾,那第二個參數可以省略,例如說:

let arr = [0, 1, 2, 3, 4, 5]
console.log(arr.slice(4)) // 從 index 4 拿到最後,所以是 [4,5]

簡單來說,如果你想要取 a ~ b 個元素,那就是 arr.slice(a, b+1)

如果你想從 a 開始取 len 個字元,那就是:arr.slice(a, a + len)

// 取 1 ~ 3 個元素
console.log([0,1,2,3,4,5].slice(1, 4)) // [1, 2, 3]
// 從第 2 個開始取 3 個元素
console.log([0,1,2,3,4,5].slice(2, 5)) // [2, 3, 4]

splice#

函式為:arr.splice(要插入的位置, 要刪除的數量, 要插入的元素們)。 底下只介紹兩種簡單的情況,一種是在位置 n 插入元素,一種是刪除位置 n 的元素。

在指定位置 n 插入元素,n 會是這個元素的新索引#

var arr = [1, 2, 3]
// arr.splice(要插入的 index, 0, 要插入的元素)
arr.splice(2, 0, 99) // n=2, 插入元素為 99
console.log(arr) // [1, 2, 99, 3]

刪除 index 為 n 的元素#

var arr = [1, 2, 3]
// arr.splice(要刪的 index, 1)
arr.splice(2, 1) // n = 2
console.log(arr) // [1, 2]