数组
数组是值的有序集合,每个值叫做一个元素,每个元素在数组中有一个位置,用数字表示,称为索引(有时也叫做下标),数组的元素可以是任何类型的,数组索引从0开始,数组最大能容纳4294967295个元素。
定义数组
遍历数组
-
for循环
-
for in循环
当数组中出现索引不是数字的元素时,不能用for循环遍历,只能用for in
多维数组
二维数组
数组的每一项内容也都是数组
二维数组取值
输出二维数组的每一项
数组的方法(改变原数组 8种)
-
push()
- 作用:向数组的尾部添加内容
- 参数:要添加的内容(可以是多项)
- 是否修改:修改原数组
- 返回值:新数组的长度
-
pop()
- 作用:从数组的尾部删除内容
- 参数:无
- 是否修改:修改原数组
- 返回值:被删除的内容
-
unshift()
- 作用:向数组的开头添加内容
- 参数:添加的内容 可以是多项
- 是否修改:修改原数组
- 返回值:新数组的长度
-
shift()
- 作用:删除数组的第一项
- 参数:无
- 修改:修改原数组
- 返回值:被删除的内容
-
reverse()
- 作用:将数组元素反向排序
- 参数:无
- 是否修改:修改原数组
- 返回值:排序后的数组
-
sort()
- 作用:把数组进行排序
- 参数:无或者一个函数
- 是否修改:修改原数组
- 返回值:排序后的新数组
-
splice()
有没有数组塌陷
增删改 修改原数组
- 删除
- 新增
- 添加到索引的前面
- 替换 修改
数组方法中,修改原数组的方法(8种)
push pop unshift shift reverse sort splice fill
-
fill()
- 作用:填充
- 填充值 不写值时(默认是undefined)
- 是否修改:修改原数组
- 返回值:填充后的新数组
数组方法(不改变原数组)
-
slice()
- 作用:获取子数组
- 是否修改:不修改原数组
- 返回值:获取的子数组(新数组)
- arr.slice(开始索引,结束索引)
- arr.slice(开始索引)
从开始索引截取到最后
- arr.slice()
从0开始截取到最后,相当于复制了一遍
- arr.slice(开始索引,结束索引) 负值
都可以是负值
-
concat()
- 作用:拼接
- 参数:拼接的内容
- 是否修改:不修改原数组
- 返回值:拼接后的新数组
-
toString()
- 作用:转为字符串
- 参数:无
- 是否修改:不修改原数组
- 返回值:字符串 ,用逗号分隔
-
join()
- 作用:转为字符串
- 参数:有/无
- 是否修改:不修改原数组
- 返回值:字符串 无参数是默认用逗号分隔
- 有参数时,根据自定义参数拼接
eval() 运行代码块
-
indexOf() / lastIndexOf()
- 作用:判断数组中是否含有对应的元素 如果含有返回对应的索引
- 😈 如果该元素在数组中有多个,返回第一个的索引;不含返回-1
- 参数:(想要判断的内容,开始索引(默认为0))
- 是否修改;不修改原数组
- 返回值:索引 -1
-
includes()
- 作用:判断数组中是否含有某项内容,有true 没有false
- 参数:要判断的内容
- 是否修改:不修改原数组
- 返回值:true false
-
flat()
- 作用:数组扁平化
- 参数:无(默认拍平一层) 有(数值 拍几层) (infinity 无穷 无限)
- 是否修改:不修改原数组
- 返回值:拍平后的数组
数组去重
思考:数组去重
第一种 indexOf()
第二种 includes()
第三种 typeof
判断新对象中是否含有循环当前元素 存在用splice删除当前项,i-- 调整索引位置 防止发生数组塌陷问题
第四种 第三种的改进
typeof 判断新对象中是否含有循环当前元素如果含有 用数组的最后一项代替当前的重复项 再删除数组的最后一项 i-- 最后一项替换过来后再次进行比较,防止出现再次重复
第五种 普通的两层循环
第一层循环轮数 第二层循环取后面的数 进行比较 如果相同 使用splice将后面相同项删除掉
-
数组迭代方法(9种)
-
forEach
- 作用:遍历数组中的每一项,注意:return没有任何作用
- 参数:函数 三个参数(item ,index,arr)
- 返回值:undefined
- 是否修改原数组:不修改
数组每一项+1
-
map() + return
- 作用:把一个数组映射成一个新的数组 (长度相同)
- 参数:函数 三个参数(item,index,arr)
- 返回值:映射后的新数组(就是return的值)
- 是否修改原数组:不修改
-
filter()
- 作用:过滤 把满足条件(return)的内容都查找出来
- 参数:函数 三个参数(item,index,arr)
- 返回值:过滤后的新数组
- 是否修改原数组:不修改
-
find()
- 作用:查找 把满足条件(return)的内容都查找出来,只要第一项
- 参数:函数 三个参数(item,index,arr)
- 返回值:过滤后的新数组
- 是否修改原数组:不修改
-
findIndex()
- 作用:过滤 把满足条件(return)的内容索引查找出来,只要第一项
- 参数:函数 三个参数(item,index,arr)
- 返回值:查找的那一项索引值 查不到是 -1
- 是否修改原数组:不修改
-
some()
- 作用:数组中有满足条件(return)那项(有一项满足就可以) 有true 没有false
- 参数:函数 三个参数(item,index,arr)
- 返回值:true false
- 是否修改原数组:不修改
-
every()
- 作用:数组中的每一项都要满足条件才是true 否则false
- 参数:函数 三个参数(item,index,arr)
- 返回值:true false
- 是否修改原数组:不修改
-
reduce()
- 作用:一般用于求和
- 参数:函数 三个参数(res,item,index,arr)
- 返回值:true false
- 是否修改原数组:不修改
参数可以有两个,第二个参数是初始值
-
reduceRight()
倒叙循环 从右向左循环