1.作用
存放多个数据的集合; 数组的边界"[]",数组的组成称为元素,元素与元素之间通过逗号隔开,元素的数据类型没有限制
2.定义方式
数组字面量 var name = "terry" var arr = [name,1,true,"hello",null,{name:"s"},function(){}];构造函数 Array
Array 继承 Object 通过Array构造函数构建出来的对象可以调用Array原型中的方法,还可以调用Object原型中的方法
var arr = new Array(); var arr = new Array(length); var arr = new Array(item1,item2,...); arr ->Array.prototype-> Object.prototype3. 数组访问方式
中括号访问符,索引从0开始,如果指定索引的位置没有值,返回undefined
4. 数组内存
var arr = ["terry",12,[1,2,3]]; arr是变量,保存在栈区 arr是引用数据类型的变量,栈区保存的引用地址,数组的值保存在堆区
5. 数组的属性
数组也是一种对象,length是表示数组长度的属性,length表示数组中元素的个数
6.数组的遍历(循环遍历索引)
var arr = [1,2,3,4,5];
使用for循环 for(var i = 0 ; i<arr.length; i++){ var val =arr[i] console.log(val); } 使用while使用do-while使用增强for循环 for(var key in arr){ var val = arr[key] }7. 数组相关的API
1.添加元素移除元素相关【改变原值】
pop(); 出栈,从数组的最后去除一个元素 参数:none 返回值:出栈的元素
shift(); 出队,将数组中第一个元素取出来 参数:none 返回值:出队的元素
unshift(p1,p2,….); 插队,将元素插入在数组的最前面 参数:要插队的元素 返回值:插队后队列的长度
2.排序方法【改变原值】
sort() 按照字符在字符编码表中出现的位置进行排序
sort(conparator) comparator为一个比较器函数,函数可以接受两个值a,b; 当a位于b之前的时候返回
3.序列化方法
toString():将数组转换为字符串,数组中的元素通过逗号连接
join(v):将数组转换为字符串,数组中的元素通过v连接
JSON.stringify():将数组转换为JSON字符串
4.截取方式
concat()【不改变原值】 将参数中的数组和当前数组合并为一个数组 参数:多个数组 返回值:合并后的数组
slice(begin,end)【不改变原值】 从当前数组中截取一个子数组并取范围 参数:begin 起始位置;end 结束位置 返回值:截取到的子数组
splice(begin,delete[p1,p2,p3…])【改变原值】 从数组中删除、插入、更新元素 参数: begin:起始位置(删除,插入) delete:删除的个数 p1,p2,….:插入的值 返回值:删除的元素组成的数组
5.迭代方法
forEach(function(item,index,arr){}) 遍历当前数组 参数:function(item,index,arr){} 每次遍历一次,这个匿名函数就会被调用一次,forEach将当前遍历的元素,索 引,当前数组当做实参传递这个匿名函数
every(function(item,index,arr){}) 判断数组中所有的元素是否满足回调函数中给定的条件 参数:function(item,index,arr){} 当每次回调函数返回值为true,every方法的结果就为true, 当回调函数返回值为false,every方法的结果就为false
some(function(item,index,arr){}) 判断数组中是否有满足条件的元素 参数:function(item,index,arr){} 当回调函数返回true,some方法的结果就为true 当每次回调函数返回false,some方法的结果才为false
filter(function(item,index,arr){}) 参数:function(item,index,arr){} 当回调函数返回true,当前元素就会被添加到返回值数组中 返回值:数组
map(function(item,index,arr){}) 参数:function(item,index,arr){} 回调函数可以返回任意类型的值,这些值都会被添加到map方法的返回值数组中 返回值:数组
6.查找方法
indexOf()
lastIndexOf()