增加元素
push( ) 在数组尾部(所有元素的最后面)添加一个或多个元素
unshift( ) 在数组头部(所有元素的最前面)添加一个或多个元素
=>返回值为新增元素后数组的长度
删除元素
pop( ) 在数组的尾部删除一个元素(每次调用删除一个)
shift( ) 在数组的头部删除一个元素(每次调用删除一个)
=>返回值为被删除的元素
splice() 增删改
1.splice(index,n)
任意位置删除 从下标为index的位置开始 删除n个元素
2.splice(index,0,arg1,arg2…argN)
任意位置新增 从下标为index的位置开始 删除0个元素,再新增一个或多个元素(从第三参数开始 都属于新增的元素)
3.splice(index,n,arg1,arg2…argN)
任意位置修改 从下标为index的位置开始 删除n个元素,再新增一个或多个元素(从第三参数开始 都属于修改的元素)
=>返回值为被删除的元素形成的数组
反转数组
reverse() :方法用于颠倒数组中元素的顺序。
=>返回值: 颠倒后的数组
裁切数组
slice(start,end) :通过指定起始下标和终止下标 裁切数组中的某一段元素
start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
=>返回值:返回一个包含从 start 到 end (不包括该元素)的 新数组
是否影响原数组 不影响
拓展用法:
1. 分页功能 [0,60) [60,120)
2. 不传参 => 得到一个与 原数组元素相同的新数组(数组的深复制) 可以帮助我们在不影响原数组的情况下 操作数组(先复制一份 在操作)
数组排序
sort( ) : 数组排序(官方提供的数组排序的方法)
1.字符排序 (按照ASCII码表的大小排序)
2.纯数字排序
把函数当成参数传入到sort()方法中 => 规定如何排序
该函数有两个形式参数 a,b 分别表示每次比较的前后两个元素 (用于指定排序的方式)
=>返回值: 排序后的原数组
连接数组
concat( ) : 可以将多个数组和元素拼接形成一个新数组,
如果拼接的是一个数组,则将数组展开(遍历数组中的每个元素) 放到新数组中。如果拼接的不是一个数组,则直接放到新数组中
=>返回值: 拼接形成的新数组
是否影响原数组 不影响
拓展用法:
不传参 => 得到一个于原数组 元素相同的新数组(数组的复制)
查看元素下标
indexOf( ) : 返回某个元素在数组中第一次出现的位置(下标)
=>返回值为:如果该元素存在则返回对应的下标, 不存在则返回 -1
是否影响原数组:不影响
判断元素是否存在
includes( ) (ES6新增)
用于判断数组中是否存在某个元素 可以判断是否存在NaN
=>返回值 存在=> true 不存在=>false
是否影响原数组:不影响
数组元素的拼接
join(char)
用特定的字符将数组拼接形成字符串 如果不传参 char默认","
=>返回值: 拼接形成的字符串
是否影响原数组:不影响
数组循环的方法
forEach( )
遍历数组,每次循环时执行传入的回调函数(执行的操作)
回调函数接收三个参数 item(循环当前的元素),index(当前下标),array(原数组)
=>返回值:undefined
map( )
数组的映射(迭代 => 根据原数组 生成新数组)
遍历数组,每次循环时执行传入的回调函数(执行的操作), 并接收回调函数的返回值,放到新数组中 最终返回
=>返回值: 回调函数中的返回值 形成的新数组
filter()
数组的过滤/筛选 (把满足条件的元素 放到新数组中).
遍历数组,每次循环时执行传入的回调函数(执行的操作), 回调函数返回(return)一个条件表达式,把满足条件的元素 放到新数组中
=>返回值: 满足条件的元素 形成的数组
some()
判断数组中是否存在满足条件的元素.
遍历数组,每次循环时执行传入的回调函数(执行的操作), 回调函数返回(return)一个条件表达式,只要有一个元素满足则返回true , 都不满足返回false
=>返回值: 布尔值
every()
判断数组中所有的元素是否都满足满足某个条件.
遍历数组,每次循环时执行传入的回调函数(执行的操作), 回调函数返回(return)一个条件表达式,全都满足则返回true , 有一个不满足则返回false
=>返回值: 布尔值
数组的归并(正反)
arr.reduce(function(prev,item,index,array){},initValue)
- 遍历数组,每次循环时执行传入的回调函数,并将回调函数的结果保留作为下一次的prev传入
- initValue 用于指定prev的初始值
- 如果有initValue,initValue作为Prev的初始值 数组从下标0开始遍历
- 如果没有initValue,数组中的第一个元素UI作为prev的初始值 数组从下标1开始遍历
数组的浅拷贝和深拷贝
浅拷贝:
引用类型 直接赋值的操作叫做浅复制 => 两个变量引用同一片内存空间(只要有一个改动,另一个会随之改动)
var arr = [1,2,3];
var brr = arr;
console.log(arr === brr);
深拷贝:
在不影响原数组的情况下 得到一个与原数组元素相同的新数组
- 新建数组 遍历原数组 将原数组中的每一个元素 放到新数组中 (针对值类型的数组)
- 借助数组的拓展方法 slice concat (针对值类型的数组)