一、了解数组
数组是一个引用数据类型,它是一个可以存储任意数据类型的容器。它有一个length 属性表示数组里面成员的个数,想要获取数组里的成员需要使用到数组的下标又叫做索引,他的索引从0开始到length-1结束,array[0]表示第一个成员,array[length-1]表示最后一个成员。
二、定义一个数组
1.字面量创建
var arr = []
2.内置构造函数创建
let arr = new Array()
使用此方法创建数组时可以传递参数
传递一个参数的时候 表示定义一个长度为这个参数的数组
传递多个参数的时候 没有参数表示长度了 参数一一对应的作为数组的值
三、数组的常用方法
1.push
作用:在数组的最后面添加一项
语法: arr.push(值)
返回值: 新数组的长度
原数组: 改变了 新增了一项
2. pop
作用:删除数组的最后一项
语法: arr.pop()
返回值: 删除的那一项
原数组: 改变了 删除后的数组
3. unshift
作用:在数组的最前面增加一项
语法: arr.unshift(值)
返回值: 新数组的长度
数组: 增加后的数组 改变了
4. shift
作用:删除数组的第一项
语法: arr.shift
返回值: 删除的那一项
原数组: 改变了 删除后的数组
5. splice
作用:可以删除、截取、替换
语法: arr.splice(开始的索引,截取的项目,替换1,替换2,...)
返回值:
如果只有一个参数的时候 表示从这个参数开始一直截取到数组的最后面
截取的项组成的数组
第二个参数表示截取的项目
如果有第三个参数或者更多 那么相当于替换 (替换的第一值要占用开始的索引)
原数组: 改变了,剩下的和插入的组成数组
6.slice
作用:截取
语法: arr.slice(开始的索引,结束的索引)
注意: 1.包前不包后
2.结束的索引可以是负数 表示截取到倒数的位置
返回值:截取的项组成的数组
原数组:原数组不改变
7. join
作用:把数组里面值 用符号连接起来变成字符
语法:arr.join()
没有传递参数的时候 默认以","连接
传递参数 那么就以这个参数连接
返回值: 字符串
原数组: 没有变化
8.reverse
作用: 反转数组
语法:arr.reverse()
返回值: 反转后的数组
原数组: 反转后的数组
9.concat
作用:连接两个数组
语法:arr1.concat(arr2)
返回值: 新的数组
原数组: 没有变化
四、ES5数组得高级用法
1. indexOf()
作用: 根据值查找对应的索引 从左到右依次查找
语法: arr.indexOf(查找的值,开始的索引)
返回值:
果能找到对应的值 那么返回当前项的索引
如果找不到对应的值 返回 -1
2. lastIndexOf
作用: 根据值查找对应的索引 从右到左依次查找
语法: arr.lastIndexOf(查找的值,开始的索引)
返回值:
如果能找到对应的值 那么返回当前项的索引
如果找不到对应的值 返回 -1
3. forEach
遍历数组
语法: arr.forEach(function(item,index,arr){
item // 表示数组的每一项
index // 表示每一个索引
arr // 表示原数组
})
返回值:没有返回值
4. map
作用:遍历数组
语法: arr.map(function(item,index,arr){
})
返回值: 返回一个长度和原数组长度一样的新数组 里面的值是遍历的时候return 后面的计算结果
5.filter
作用:过滤
语法:arr.filter(function(item,index,arr){})
返回值:是一个新数组
满足return 后面的表达式的项组成的数组
6. some
作用:只要有一项满足条件 那么就直接停止遍历 然后返回true,所有的都不满足 那么返回false, 不写判断条件 返回false
语法: arr.some(function(item,index,arr){})
返回值:返回布尔值 (true/false)
7. every
作用:所有的都满足 才会返回true,只要有一个不满足 那么直接停止遍历 然后返回false,不写判断条件 返回false
语法:arr.every(function(item,index,arr){})
返回值:返回布尔值 (true/false) +
8. reduce
作用:求和
语法:arr.reduce(function(result,item,index,arr){
// 如果有初始值 那么第一个result 就是初始值 后面的每一次遍历的result 都是前一次返回的结果
// 如果没有初始值 那么第一个result 就会是数组的第0项默认遍历出来的结果
},初始值)
返回值:就是最后一次遍历return 返回的结果
五、扩展
1.把伪数组转化为真正的数组
语法:Array.from(伪数组)
返回值:真正的数组
2.Set
作用:是一个类似数组的数据结构,每一个成员都是唯一的,可以用来进行数组去重
语法: var 变量 = new Set(数组)
size 表示成员个数
方法: 它自己有一些方法
1. add : 添加
2. has : 判断有没有这个成员 返回布尔值
3.delete: 删除单个成员 ,返回值是布尔值
4.clear:清空所有成员
3.findIndex
作用:查找满足条件的项的索引,找到第一个满足就停止查找
语法: 数组.findIndex()
返回值:有满足的返回对应的索引,没有满足的返回 -1
4.find
作用:查找满足条件的项,找到第一个满足就停止查找
语法:数组.find()
返回值:有满足的返回对应的项,没有满足的返回undefined
5.isArray
作用:判断是不是数组
语法:Array.isArray(判断的东西)