---
# System prepended metadata

title: 改變陣列的方法

---

# 改變陣列的方法

## push()、unshift()、pop()、shift()

### 增加元素
#### push()
在陣列的**末端**增加指定元素
#### unshfit()
在陣列的**首端**增加指定元素

> 這兩個方法都不限制數量，用逗號隔開即可


### 移除元素並回傳被刪除的元素
#### pop()
移除陣列**最後一個**元素，並回傳被刪除的元素
#### shift()
移除陣列**第一個**元素，並回傳被刪除的元素

Example:
``` javascript=
let greetings = ['hello'];
let popped = greetings.pop();
// greetings 值爲 []，popped 值爲 hello
```

> 這兩個方法不接受參數，且一次都只能移除一個元素並回傳

## splice()、slice()
### splice()
#### (1) 刪除
對陣列**連續刪除任意數量的元素**，接受最多3個參數
第一個是索引位置(要從第幾個開始刪)
第二個則是從要刪除的位置開始移除元素的數量
``` javascript=
let arr = [1, 2, 3, 4, 5];
arr.splice(0,3);
console.log(arr); // arr = [4, 5];
// 從第零個開始刪3個元素，刪掉[1, 2, 3]
```
#### (2) 添加
第三個參數用來**添加**一個或多個連續元素
會根據第一個參數所指定的索引位置開始添加
``` javascript=
const num = [1, 2, 3, 4, 5, 6, 7];
num.splice(2, 1, 100, 200, 300);
console.log(num); 
// num = [1, 2, 100, 200, 300, 4, 5, 6, 7];
```

### slice()
#### (1) 提取
只接受2個參數
第一個是開始提取元素的索引位置
第二個是結束提取元素的索引位置
*提取的元素中不包括第二個參數所對應的元素
``` javascript=
const str = [1, 2, 3, 4, 5, 6, 7];
let str2 = str.slice(1, 4);
console.log(str2);
// 從2(str[1])開始提，提到５(str[4])之前
// str2 = [2, 3, 4]; 
```
