一、数组的创建
方式一
var a = new Array(); a[0]="wo"; a[1]="My Name" a[2]=5 a[3]={x:1 , y:3}
方式二
var a=new Array("wo","My Name",5,{x:1 , y:3}); var a2=new Array(13);//注意,这个13是表示a有13个未定义元素!(因为这时候只传给Array一个参数)
方式三
var a=["wo","My Name",5,{x:1 , y:3}]; var a2=[[1,2,3],[1,2,3]];//可以嵌套 var i=11; var a3=[i,i+1,i+2];//可以为变量 var a4=[1,,,,5];//有3个未定义的元素
二、数组的函数
1. join() 把所有的元素转换为字串,参数作为分隔符(默认分隔符是 ,)
var a=[1,2,3]; a.join();//1,2,3 a.join(" : ");//1 : 2 : 3
2.reverse() 对数组反向排序 sort() 默认按照UTF-8码的顺序排序,可以传一个参数,如果返回一个小于等于0的数,第1个参数出现在第2个参数前面,反之同理
function randOrd(){ return (Math.round(Math.random())-0.5); } anyArray = new Array('3','a','5','F','x','47'); anyArray.sort( randOrd ); //把数组乱序排列
3.concat() 返回一个数组,包含了原数组和参数
anyArray = new Array(47,33); anyArray.concat(8,99,88 ); //[47,33,8,99,88] anyArray.concat([8,99],[88,53] ); //[47,33,8,99,88,53],会自动把参数中数组拆包一层 anyArray.concat(2,[3,[4,5]]); //[47,33,2,3,[4,5]],拆包只拆一层
4.slice() 返回一个数组的切片,返回规则如下
var a = [1,2,3,4,5] a.slice(0,3); //返回a[0]至a[2],即[1,2,3] a.slice(3); //返回a[3]至结尾,即[4,5] a.slice(1,-1);//返回a[1]至最后一个元素[2,3,4] a.slice(-3,-2);//返回[3]
5.splice() 可以删除/添加原数组元素,同时返回删除的值
var a = [1,2,3,4,5,6,7]; a.splice(4); //删除a[4]至结尾,同时返回删除的值,即a=[1,2,3,4],返回[5,6,7] var a = [1,2,3,4,5,6,7]; a.splice(3,3,"a","b"); //从a[3]开始,删除3个元素(包括a[3]),同时在从a[3]开始插入"a","b"作为新的元素,返回删除的值 //即a=[1,2,3,"a","b",7],返回[4,5,6] var a = [1,2,3,4,5,6,7]; a.splice(3,0,["a",2],"k"); //返回[],a=[1,2,3,["a",2],"k",4,5,6,7] ,splice()不会对添加的数组拆包
6.push()和pop()
var stack=[]; stack.push(1,2);//stack=[1,2],return 2(2表示数组长度) stack.pop();//stack=[1],return 2 stack.push(3);//stack=[1,3],return 2(2表示数组长度) stack.pop();//stack=[1],return 3 stack.push([4,5]);//stack=[1,[4,5]],return 2 stack.pop();//stack=[1],return [4,5] stack.pop();//stack=[],return 1
7.unshift()和shift() 和push()和pop()类似,不过是在数组的头进行操作
var a=[2]; a.unshift(1); //a=[1,2] //IE(包括IE7)和标准的规定返回值却不同,Gecko/Opera 中返回值为新数组的长度,而 IE 中没有返回值,也就是返回值是 undefined。因此,编程时不要依赖这个返回值。 a.unshift(3,[4,5]);//a=[3,[4,5],1,2] a.shift(); //返回3
8.toString() toString等价于参数为空格的join