ECMAScript数组的每一项可以保存任意类型的数据,它的大小也是可以动态调整的。
-
创造数组的两种方式
- 第一种是根据Array构造函数。如果知道数组长度,也可以在创造时就规定;也可以在定义时赋值。另外,你还可以省略new操作符。
var aArr=new Array();
var aArr=new Array(20);
var aArr=new Array("w","w");
- 第二种使用数组字面量表示法。
var aArr=[1,2,3,4];
在读取数组中的值时,使用方括号法。如:使用第二种方法定义的数组aArr[0]的值为1.数组的项数保存在length属性中。它不仅能从数组末尾移除项,还可以向数组增添新项.给lenth属性赋值0,可快速清空数组。
2.检测数组
- 在全局作用域下或一个网页的情况下,使用value instanceof Array
- 为了解决上述方法的不足,有Array.isArray()这一方法
3.转化方法
- toString(),返回数组中每个值的字符串形式,参数默认为10,可设置2~36的整数。
- valueOf(),返回数组值本身。
- alert(),接收字符串参数,所以会在后台调用toString()
4.栈方法
1.push():push()方法可以接收任意数量的参数,把他们逐个添加到数组末尾,并返回修改后的数组长度。
2.pop():pop()方法可以从数组末尾移除最后一项,返回移除的值。
var aString=new Array();
var iCount=aString.push("red","blue");
alert(iCount);//2
alert(aString);//red,blue
var oString=aString.pop();
alert(oString);//blue
5.队列方法
栈数据结构发的访问规则是后进先出,队列数据结构的访问规则是先进先出,也就是在队列的末端添加项,在队列的前端移除项。后者就是shift(),它能够移除第一项.从而正向模拟队列。
还有一个unshift()方法,顾名思义,即在前端添加项,与pop()结合可以反向模拟队列。
6.重排序方法
数组中已经存在两个可以用来重排序的方法:reverse()和sort()。前者会反转数组的顺序,后者则能够按升序排列数组(会用toString()方法转化成字符串并比较字符串)
var values=new Array(1,2,3,14);
alert(values);
alert(values.reverse());//14,3,2,1
alert(values.sort());//1,14,2,3
为了能够按数值大小进行排序,我们定义了这样的一个比较函数。
function compare(value1,value2){
return value1-value2;
}
value.sort(compare)//从小到大排序
7.操作方法
1.contact()可以将参数添加原来数组并返回新的数组。
2.slice()可以接收一个或两个参数,即要返回项的起始位置和结束位置,注意该方法不会影响原数组。
var colors=["red","green","blue"];
var colors2=colors.concat("yellow",["black","brown"]);
alert(colors);//red,green,blue
alert(colors2);//red,green,blue,yellow,black,brown
var colors3=colors.slice(1,4);
alert(colors3);//green,blue
你还可以用slice()做:删除,插入(提供三个参数,起始位置、0、要插入的项)、替换(提供三个参数:起始位置,要删除的项数,要插入的任意数量的项)。
8.位置方法
数组有两个位置方法:indexOf() and lastIndexOf()。连个方法都接收两个参数:要查找的项和查找起点位置的索引。indexOf()是从数组的开头向后查找,lastIndexOf()则是从数组末尾开始向前查找。、
var iNub=[1,2,3,4,5,6,7];
alert(iNub.indexOf(3));//2
alert(iNub.lastIndexOf(3))//2