Array类型是ECMAScript 用的最多的类型了,ECMAScript中的数组每一项可以保存任何类型的数据,也就是说,数组的第一个项保存字符串,用第二个保存数值,用第三个位置来保存对象。二千数据的大小是可以动态调整的,即可以随着数据的添加自动增长以容纳新增数据。
1.创建数组数组的方式分为两种: 1.1使用 nwe 的方式 var colors=new Array(); 1.2.使用Array构造函数省略new操作符 var colors=Array(3); //创建一个包含3项的数组 var names=Array("Greg"); //创建一个包含1项,即字符串“Greg”的数组 2.使用字面量的方式来创建 var colors=["red","blue","green"]; //创建一个包含3个字符串的数组 var names=[]; //创建一个空数组 2获取和设置数组的值,试用方括号,如下所示: var colors=["red","blue","green"]; //定义一个字符串的数组、 alert(colors[0]); //取到第一项,并显示,索引是从0开始的,所以是red colors[2]="black"; // 修改第三项 colors[3]="brown" ; //新增一个项 3.数组的项数保存在其length属性中,这个属性始终返回0或者更大的值。 var colors=["red","blue","green"]; alert(colors.length); //显示的是3 var names=[]; alert(names.length); //空的数组,长度是0,返回的是0 注意:数组的length属性不是只读的,因此,通过设置这个属性,可以从数据的末尾移除或项数组中添加新项。如: colors.length=4; //现在数组就多了一个长度,值是undefind colors.length=2; //数组的长度改变成了2个了 4.检测数组 使用ECMAScript5 新增的Array.isArray() 这个方法,如: if (Array.isArray(value)) { //value是数组对象 //对数组进行操作 } 5.转换方法 tostring():把数组转成string join(): 使用自定义的分隔符来构建这个这个字符。如: var colors=["red","blue","green"]; var joinStr=colors.join("||"); alert(joinStr); //red||blue||green6.栈方法 Push(): 可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度。 Pop() : 从数组末尾移除最后一项,减少数组的length的值,然后返回移除的项。 Var colors=new Array(); //创建一个数组 Var count=colors.push(“red”,”green”); //添加两项 Alert(count); //返回2 Count=colors.push(“black”); //推入另一项 Var item=colors.pop(); //移除最后一项,并返回移除的对象 Alert(item); //所以,是 black Alert(item.length); //长度以减少了7.列队方法 Shift() : 移除数组中第一项,并返回该项,同时将数组长度减1; Var item =colors.shift(); //取得第一项 Alert(item ); //取得第一项:red Alert(colors.length); //长度减1 Unshift(): 在数组前端添加任意个项,并返回添加后的长度。 Var colors=[“red”,”blue”]; Var count=Colors.unshift(“black”); //添加一个black到这个数组的最前端,并返回长度 Alert(colors.tostring()); // 现在数组里的项: black ,red,blue8.重新排序方法 Reverse(): 反转数组项的顺序;9.操作方法 Concat(): 可以基于当前数组中的所有项创建一个新数组。 Var colors=[“red”,”green”,”blue”]; Var colors2=colosr.concat(“yellow”,[“black”,”brown”]); Alert(colors); //red,green,blue Alert(colors2); //red,green,blue,yellow,black,brown Slice():基于当前数组中的一个或多个项创建一个新数组, Slice(index,number):index表示开始位置;number表示结束位置,不给默认是到当前数组末尾的所有项。如果结束位置小于开始位置,则返回空数组。 Splice():向数组中插入项,使用方法 如下: 删除:可以删除任意数量的项,只需要制定2个参数: 要删除的位置,要删除的项数 插入:可以向指定位置插入任意数量的项,3个参数:开始位置,0(要删除的数),插入的项 替换: 可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定3个参数:起始位置,要删除的项,要添加的项。 Var colors=[“red”,”green”,”blue”]; Var removed=colors.splice(0,1); //从0开始,删除1项 Alert(remove); //red ,删除的项 Removed=colors.splice(1,0,”yellow”,”orange”); //从位置1开始插入两项 Alert(removed); //返回一个空数组 Removed=colors.splice(1,1,”red”,”blue”); //从项1开始,删除一项,然后再添加两项,相当于替换, Alert(removed); //yellow ,返回被替换的项10.位置方法 IndexOf(value,index): 从数组开始位置向后查找,返回其下标 lastIndexOf(valeu,index): 从数组的末尾开始向前查找。返回其下标 包含两个参数:value:要查找的项, index:开始找的位置,没有找到就返回-1; Var number=[1,2,3,4,5,4,3,2,1]; Alert(number.indexof(4)); //从开始位置找起,而且没给开始位置,不给是从0开始找起,会一直找,直到找到,返回对应的下标,并返回其下标; 所以返回的是3 Alert(number.indexOf(4,4)); //这次,给了起始位置,所以会从下标4开始找起,下标4对应的是值 5,5后面就是4了,所以返回是 5: Var person={“name”:”a”}; Var people=[{“name”:”a”}]; Var morePeople=[person]; Alert(people.indexOf(person)); //-1 Alert(morePeople.indexOf(person)); //011.迭代方法 Every():对数组何总的每一项运行给定函数,如果该函数对每一项都返回true,则返回true; Filter();对数组中的每一项运行给定函数,返回这个函数会返回true的项组成的数组。 ForEach(): 对数组中的每一项运行给定函数,这个方法没有返回值。 Map(): 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。 Some():对数组中的没一项运行给定函数,如果该函数对任一项返回true,则返回true ,以上方法都不会修改数组中包含的值。 Var number=[1,2,3,4,5,4,3,2,1]; //item :表示数组具体元素,index:表示下标 ,array:表示当前数组 Var everyResult=number.every(function(item,index,array){ Return (item>2); }); Alert(everyResult); //false Var someResult=number.some(function(item.index,array){ Reutn (item>2); }); Alert(someResult); //true 以上代码调用every()和some(),传入的函数只要给定项大于2就会返回true,对于every(),它返回true,因为只有部分数组项符合条件,对于some(),结果就是true,因为至少有一条大于2. Var filterResult =.filter(function(item,index,array){ Reutnr (item>2); }); Alert(fileterResult); //[3,4,5,4,3] Var mapResult=number.map(function(item,index,array){ Return item*2; }); Aelrt(mapResult); //[2,4,,6,8,10,8,6,4,2] number.forEach(function(item,index,array){ //执行操作 });注意啊: 以上有很多的方法必须要现代浏览器上才用啊,ie9 以前的浏览器都不支持,今天就被坑了。最后用JQURY解决的。