[TOC]
## 數組排序
```
var a = [1, 54, 33, 556, 3334, 11]
```
### 1.冒泡排序
```
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)
```
### 2.js內置對象排序
```
var a = [1, 54, 33, 556, 3334, 11]
a.sort(function(i,j){
return i - j;
})
console.log(a)
```
## 去偶數合集
```
var temp = [ ]
for(var i = 0;i<a.length;i++){
if(a[i]%2==0){
temp.push(a[i]);
}
}
console.log(temp)
```
## 取最大,小值
```
<script>
var arr = [1,3,2,5,10,100,50];
var max = arr[0];
for(var i=0;i<arr.length;i++){
if(max<arr[i]){
max=arr[i]
}
}
console.log(max);
</script>
```
## 取反
```
console.log(a)
var temp = [];
for(var i = 0;i<a.length/2;i++){
var b = a[i]
a[i]= a[a.length-i-1]
a[a.length-i-1] = b;
}
console.log(a)
```
## 數組去重
~~~
1.新建一新數組,遍歷舊數組,值不在新數組就push進該新數組中 !temp.includes(array[i])
2.根據數組下標去重 :如果當前數組的第i項在當前數組中第一次出現的位置是i, 才存入數組;否則代表是重復的array.indexOf(array[i]) == i
3.遍歷數組 :元素0與右邊的元素依次比較,若元素有重復,則結束元素0比較,將下一個元素1當做比較對象。直到沒有重復再加入新數組,在進行下一次的比較(比較從加入數組的元素i開始)
if (array[i] === array[j]){
? i++;
? j = i; ?
}
~~~
### 1.判斷值是否在數組中
```
var array = [1, 5, 7, 8, 5, 4, 3, 9, 7];
var newarr = []
for (var i = 0, j = array.length; i < j; i++) {
if (newarr.indexOf(array[i]) === -1) {
/* if (!newarr.includes(array[i]) ) { */
newarr.push(array[i]);
}
}
console.log(newarr)
```
### 2.判斷當前值在數組中的下標是否為當前下標
```
var array = [1, 5, 7, 8, 5, 4, 3, 9, 7];
var newarr = []
for (var i = 0, j = array.length; i < j; i++) {
if (array.indexOf(array[i]) == i) {
newarr.push(array[i]);
}
}
console.log(newarr)
```
### 3.優化遍歷法
```
var ar = [1, 5, 7, 8, 5, 4, 3, 9, 7];
var temp = [];
for (var i = 0; i < ar.length; i++) {
for (var j = i + 1; j < ar.length; j++) {
if (ar[i] === ar[j]) {
i++;
j = i;
}
}
temp.push(ar[i]);
}
console.log(temp)
```
## 數組復制
```
var a = [1,2,3,4]
var b = []
/* a.forEach(e => {
b.push(e)
}); */
/* b = [...a] */
/* b = b.concat(a) */
/* b.push(...a) */
/* b = a.slice(0) */
console.log(b)
```
## 數組遍歷
```
a.forEach(element => {
b.push(element)
});
```
```
//可以用于object遍歷
for (let i in a) {
b.push(a[i])
}
```
```
for (let i of a) {
b.push(i)
}
```
```
a.map(e=>{
b.push(e)
})
```
```
Array.from(a,e=>{
b.push(e)
})
console.log(b)
```
## 字符串去重成數組
> Set函數可以接受一個數組(或類似數組的對象)作為參數,用來初始化
> Set結構不會添加重復的值
> "abccaca" --> ["a", "b", "c"] --> "abc"
```
var e = [...new Set(a)].join("")
new Set(a) --->轉化成對象去重
[...new Set(a)] --->將對象解構成數組
[...new Set(a)].join("") --->數組轉化成字符串
```