[TOC]
# 数组
## 1.遍历数组
~~~
var arr = [1,2,3];
~~~
1.1
~~~
for(let i=0;i<arr.length;i++){
console.log(arr[i]+",");
}
~~~
1.2
~~~
for(let k in arr){
console.log(arr[k]+";");
}
~~~
1.3
~~~
for(let k of arr){
console.log(k);
}
~~~
1.4
~~~
arr.forEach((v,k)=>{
console.log(v);//数组值
/* console.log(k);//数组下标 */
})
~~~
## 2.数组的添加
### 2.1添加
~~~
<script>
/*
增加:
1.push 从后增加,会改变数组的结构
2.unshift 从前增加,会改变数组的结构
3.concat() 从后增加,不会改变数组的内容
*/
var arr = [1,2,3,4];
// arr.push(5,6,7);
// arr.unshift(-1,0);
var b = arr.concat(8,9);
console.log(b)
console.log(arr)
</script>
~~~
### 2.2复制
~~~
<script>
var arr = [1,2,3,4,5];
/* var b = [];
for(let i=0;i<arr.length;i++){
b.push(arr[i]);
} */
var b= [].concat(arr);
console.log(b);
/* var b = arr.slice(0);
console.log(b); */
</script>
~~~
## 3.数组的删除
~~~
<script>
/*
shift()-->从头删除并返回第一个数组值
pop()-->从后删除并返回第一个数组值
*/
var arr = [1,2,3,4,5];
arr.shift();
arr.pop();
console.log(arr);// [2,3,4]
</script>
~~~
## 4.数组的修改
~~~
<script>
/*
splice(index,howmany,item)
index-->从哪里开始
howmany -->删除几个
item-->在删除的地方添加的值
*/
var arr = [1,2,3,4,5];
arr.splice(4,0,8,9);
console.log(arr);
</script>
~~~
## 5.数组查询
~~~
<script>
/*
查询数组中值的下标
arr.indexOf(value)
*/
// var index = arr.indexOf(5);
// console.log(index);
/*
slice--截取
arr.slice(startIndex,lastIndex)-->包含startIndex,不包含lastIndex
*/
var arr = [1,2,3,4,5];
console.log(arr.indexOf(5));//查数组下标,若没有这个值,则返回 -1
var b = arr.slice(1,3);
console.log(b);//[2,3]
console.log(arr);//[1,2,3,4,5]
</script>
~~~
## 6.splice(需掌握)
~~~
<script>
/*
arr.splice(index,howmany,item) 增加
arr.splice(index,howmany) 删除
index -->必须,整数,规定添加或者删除的位置,使用负数,从数组尾部规定位置。
howmany-->必须,要删除的数量,如果为0,则不删除项目。
item-->可选,向数组添加的新项目。
*/
var arr = [1,2,3,4,5];
/* arr.splice(2,0,8);
console.log(arr); */
arr.splice(1,2);
console.log(arr);//[1,4,5]
</script>
~~~
## 7.min、max
**...arr展开数组**
~~~
var arr = [1,2,3,4,5];
//...arr展开数组
var max = Math.max(...arr);
console.log(...arr);
console.log(max);
console.log(Math.min(...arr));
~~~
## 8.join
~~~
/*
join 通过特定的分割符,将数组拼接成字符串
*/
var arr = ["green","red","yellow"];
var str = arr.join(",");
console.log(str);
~~~
## 9.数组排序
~~~
var arr = [2,0,5,4,7,8,1,2];
var copyarr = [...arr];
var d = arr.sort(function(a,b){
return a-b;
})
var e = copyarr.sort(function(a,b){
return b-a;
})
console.log(d);
console.log(e);
console.log(arr);
~~~
## 10.prototype
* 该属性使您有能力向对象添加属性和方法
~~~
<script>
//在原型上定义一个方法,所有实例化的对象都共享这个方法
Array.prototype.max = function(arr){
return Math.max(...arr);
};
var arr = [1,2,3,4];
console.log(arr.max(arr));
</script>
~~~
## map()遍历
map(value,index,array){}
**参数:value数组中的当前项,index当前项的索引,array原始数组;**
~~~
//有返回值,可以return 出来。
var ary = [12,23,24,42,1];
var res = ary.map(function (item,index,input) {
return item*10;
})
console.log(res);//-->[120,230,240,420,10]; 原数组拷贝了一份,并进行了修改
console.log(ary);//-->[12,23,24,42,1]; 原数组并未发生变化
~~~