# Array的常用方法 splice, slice, join, includes, indexOf, sort
###### tags:`JavaScript`
## join
將陣列元素連接、合併成一個字串,並回傳此字串。
- join() item加上逗號
- join('') item直接合併
- join(' ')  item 加上指定內容合併
```javascript=
const dogs = ['芒狗', '奇異狗', '蘋狗'];
console.log(dogs.join());
// "芒狗,奇異狗,蘋狗"
console.log(dogs.join(''));
// "芒狗奇異狗蘋狗"
console.log(dogs.join('-'));
//"芒狗-奇異狗-蘋狗"
```
## splice
通過刪除或取代現有元素和/或添加新元素來更改陣列的內容。
```javascript=
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// 第一個元素後刪除0個元素並加上'Feb'
console.log(months);
// ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// 第四個元素後刪除1個元素並加上'May'
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "May"]
```
## slice
不會修改原本的陣列,而是回傳由原本的陣列淺層複製的元素,起始值為0複製開始與結束點(結束點不算)中的內容。
`slice(2)`第二個item後的所有item
`slice(start, end)` `slice(2, 4)`第二個到第三個item
```javascript=
const animals = [0, 1, 2, 3, 4];
console.log(animals.slice(2));
// [2, 3, 4]
console.log(animals.slice(2, 4));
// [2, 3]
console.log(animals.slice(-2));
// [3, 4]
console.log(animals.slice(2, -1));
// [2, 3]
```
## includes
判斷陣列是否包含特定的元素,並以此來回傳 true 或 false,且區分大小寫
```javascript=
const array1 = [1, 2, 3];
console.log(array1.includes(2)); // true
const pets = ['cat', 'dog', 'bat'];
console.log(pets.includes('Cat')); // false
console.log(pets.includes('cat')); // true
```
## indexOf
回傳元素於陣列中第一個被找到之索引(index),若不存在於陣列中則回傳 -1。
```javascript=
const beasts = ['ant', 'bison', 'camel', 'duck', 'bison'];
console.log(beasts.indexOf('bison')); // 1
 // 第一個索引bison index為1 第二個為4
console.log(beasts.indexOf('bison', 2)); // 4
console.log(beasts.indexOf('giraffe')); // -1
```
## sort
對陣列的元素進行排序並返回排序後的陣列,排序預設的排序順序是根據字串的 Unicode 編碼位置。
```javascript=
const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
// Array ["Dec", "Feb", "Jan", "March"]
const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
// Array [1, 100000, 21, 30, 4]
```
## isArray
確定傳遞的值是否為Array
```javascript=
Array.isArray([1, 2, 3]);  // true
Array.isArray(undefined);  // false
```
## reverse
傳參考特性指向原本記憶體,因此在更改新array時會更動到原array
array.reverse()