[TOC]
## 數組常用的方法
```
增:push concat unshift
刪:pop--單個后刪 shift--單個前刪 splice(index,個數) ---splice(0,2)
改:splice -- splice(0,2,item1,item2)
查:indexof includes length reverse--反轉 slice--截取 join--轉化為字符串
```
## 克隆 ` 4種`
```
var a = [1,8,6,8,5,4,1]
```
```
var b = []
b = b.concat(a)
```
*****
```
b = a.slice()
```
*****
```
b = [...a]
```
*****
```
var b = []
b.push(...a)
```
## 數組遍歷 `5種`
> var a = [1,8,6,8,5,4,1]
> var b = [ ]
```
a.forEach(e=>{
b.push(e)
})
```
*****
```
for (const index in a) {
b.push(a[index])
}
```
*****
```
for (const e of a) {
b.push(e)
}
```
*****
```
a.map(e=>{
b.push(e)
})
```
*****
```
Array.from(a, e => {
b.push(e)
})
```
## 數組排序 `2種`
### 冒泡排序
```
for (var i = 0; i < a.length; i++) {
for (var j = 0; j < a.length - 1; j++) {
if (a[i] < a[j]) {
var temp = a[i];
a[i] = a[j];
a[j] = temp
}
}
}
console.log(a)
```
### sort 升序
```
a.sort()
a.sort().reverse() --降序
```
## 取最值
```
var max = a[0]
for (const i in a) {
if(max<a[i]){
max = a[i]
}
}
```
## 取反 `reverse / for`
```
a.reverse
```
```
for(var i = 0 ;i<a.length/2;i++){
var temp = a[i]
a[i]=a[a.length-i-1]
a[a.length-i-1] = temp
}
```
## 去重 `2種`
```
var b =[]
for (const e of a) {
if(!b.includes(e)){
b.push(e)
}
}
```
*****
```
for (var i in a) {
if(a.indexOf(a[i])==i){
b.push(a[i])
}
}
```
## 字符串去重成數組
> Set函數可以接受一個數組(或類似數組的對象)作為參數,用來初始化
> Set結構不會添加重復的值
> "abccaca" --> ["a", "b", "c"] --> "abc"
```
var e = [...new Set(a)].join("")
new Set(a) --->轉化成對象去重
[...new Set(a)] --->將對象解構成數組
[...new Set(a)].join("") --->數組轉化成字符串
```