数组
引用数据类型
作用:用来保存多个值,可以保存任意数据类型的值
数组是以“[ ]”为界限,值与值之间使用逗号分隔,length数组长度,数组长度是动态的
1)创建
1.数组字面量
var arr = [1,2,3,4] =>0:1,1:2,2:3,3:4
arr.length => 4
2.构造函数
var arr = new Array() =>[] =>Object
传递一个参数:给数组指定一个数组长度,var arr = new Array(10) => arr.length = 10
传递多个参数:相当于初始化数组,var arr = new Array(1,2,3,4) => [1,2,3,4]
arr.length => 0
2)数组的访问
数组下标,数组下标是从0开始的,一直到数组的长度-1,如果访问的数组下标超过数组长度,会返回一个undefined
arr[0] =>1
arr[1] =>2
arr[4] =>undefined
var arr = {'tom',12} arr[0] 0:'tom',1:12
arr[2] = true
var obj = {name:'tom',age:12} obj.name||obj['name']
obj.gender = '男'
给数组添加项:arr[下标] = 值(任意数据类型)
删除数组项:arr. length = arr.length - 3
3)数组的遍历
var obj = {name:'tom',age:12}
var arr = [1,2,3,4,5]
4)数组的检测
数据类型的检测:typeOf
typeOf arr =>Object
instanceof
arr(目标) instanceof Array =>如果arr是数组,返回true,如果arr不是数组,返回false
Array.isArray(arr)
5)数组的序列化
toString() 默认将数组的每一项使用','隔开,以字符串的形式输出
join(参数) 将数组的每一项以想要的符号分隔开,以字符串的方式输出
6)数组的api
栈,队列方法(改变元数组)
栈(先进后出,后进先出)
pop()将数组的最后一项删除 返回删除的项
push()可以接受任意数据类型,将参数逐个添加到数组末尾 返回数组长度
队列(先进先出,后进后出)
shift()移除数组中的第一项 返回被删除的项
unshift()可以接收任意数据类型,将参数逐个添加到数组的前面 返回数组长度
排序
reverse()反转数组项的顺序 改变原数组
sort()
默认排序,先调用toString方法,然后按照字符的序列排列
自定义排序
sort会接收一个函数作为参数,这个函数叫做比较器函数
arr.sort(compare)
function(a,b){
if(a>b){
return -1
}else if(a<b){
return 1
}
}
截取
concat
数组的拼接 不改变原数组 返回副本
slice
截取数组 不改变原数组 返回截取到的数组
slice(a) 从a开始截取,一直到数组结束
slice(a,b) 从a开始截取,一直到第b项,但是不包含第b项 => [a,b]
splice
删除 splice(a,b) 从第a项开始删除,删除b项 返回删除掉的项
插入 splice(a,0,b,c,d) 从第a项开始,插入,插入b,c,d 返回空数组
替换 splice(a,0,i1,i2,i3) 从第a项开始,删除b项,将i1,i2,i3插入
索引
indexOf
从数组开头向后查找,使用全等操作符,找不到该元素返回-1
第一个参数为要查找的项,第二个参数(可选)为索引开始位置
lastindexOf
从数组末尾向前查找,使用全等操作符,找不到该元素返回-1
第一个参数为要查找的项,第二个参数(可选)为索引开始位置
迭代
every()
对数组中的每一元素运行给定的函数,如果该函数对每一项都返回true,则该函数返回true
some()
对数组中的每一运行给定的函数,如果该函数对某一项返回true,则返回true
filter()
对数组中的每一项运行给定的函数,会返回满足该函数的项组成的数组
map()
对数组中的每一元素运行给定的函数,返回每次函数调用的结果组成的数组
forEach()
对数组中的每一元素运行给定的函数,没有返回值,常用来遍历元素