数组:一组有序的数据
数组的作用:可以一次性存储多个数据
数组的定义:
1.通过构造函数创建数组
语法:
var 数组名=new Array();//定义了一个空数组
var 数组名=new Array(5);//一个实参时:定义一个长度为5的数组,数组中的每个元素都为undefined
var 数组名=new Array(1,2,3,4);//多个实参时:表示数组中有1、2、3、4这几个元素,参数个数为数组长度。
2.通过字面量的方式创建数组
var 数组名=[];//空数组
var 数组名=[元素1,元素2....];
如何设置数组中某个元素的值?
数组名[下标]=值
如何获取数组中某个元素的值?
数组名[下标],如果下标超出数组长度减1,则得到的元素为undefined,而不会像java那样抛出异常
数组中存储的数据类型一定是一样的吗?可以不一样,这和其他C、C++或java不一样
可以不一样,如 var arr=[10,"haha",true,null,undefined,new Object()];
通常是一样的,这样才方便操作。
数组的长度是可以改变的吗?可以改变,这和C\C++或java不一样
如:var array=[]; array[0]=10;array[1]=20;
数组长度:
length属性,该属性不是只读的,可以设置值
var colors=["red"];
colors.length=10;//则后面有9个undefined的元素
colors.length=1;//则在数组中保留一个元素,其他元素全部删除
检测某个变量是否是数组?
变量 instanceof Array;//对一个网页或者一个全局作用域而言没问题
Array.isArray(变量);//没有局限,常用
用数组实现栈功能:
数组名.push(一个或多个元素);//向后加入数组
数组名.pop();//弹出最后一个元素
用数组实现队列功能:
数组名.push(一个或多个元素);//向后加入元素
数组名.shift();//弹出第一个元素
数组名.unshift(一个或多个元素);//在数组的前面加入一个或多个元素
数组名.pop();//弹出最后一个元素
数组反转:数组名.reverse();
数组排序:
数组名.sort(fn);
如果没有参数,那么按照字符串顺序升序排列。
fn函数有2个参数,如果第一个小于第二个则返回-1,等于返回0,小于返回1
concat方法:
var array=["1"]; array.concat(一个元素或者一个数组);//创建array数组的副本,并将参数存储到副本数组中并返回副本数组。
slice方法:
var ay=[1,2,3,4,5];
var ay1=ay.slice(起始位置,可选的结束位置);//返回原始数组的一个子数组
splice方法;
数组的splice方法可有3个参数,参数1表示起始位置,参数2表示要从数组中第一个参数后删除元素个数,第三个参数表示的元素插入到第一个参数位置的后面。
数组位置方法:
indexOf和lastIndexOf方法
迭代方法:
every(fn);//数组中的每个元素都去调用参数函数,如果都返回true,则every方法返回true
some(fn);//数组中的每个元素都去调用参数函数,只要有一个返回true,则该方法返回true
filter(fn);//数组中每个元素都去调用参数函数,filter方法返回新的数组,数组的元素为参数函数返回true的那些元素。
forEach(fn);//数组中每个元素都去调用参数函数,没有返回值
map(fn);//数组中的每个元素都去调用参数函数,返回每次参数函数返回的结果组成的数组。
上述函数的参数函数fn可以有3个参数:当前元素,当前元素的索引,整个数组