1.创建语法(2种):
1.1语法1: var arr=new Array(参数);
- 括号内没有参数:表示创建了一个初始容量为0的数组,则返回数组为空,length为0; new Array()
- 括号内为一个number类型的参数:表示创建了一个初始容量为number的数组(number出现小数或负数时会报错),length为number数值,返回元素为undefined; new Array(size)
- 括号内为其他数量及类型的参数:表示创建一个包含参数为初始数据的数组; new Array(element0,element1,....elementn)
var arr1=new Array(); var arr2=new Array(3); var arr3=new Array("gsl","hello",6,true); console.debug("arr1:"+arr1); console.debug("arr1.length:"+arr1.length) console.debug("arr2:"+arr2[0]+" "+arr2[1]+" "+arr2[2]); console.debug("arr2.length:"+arr2.length); console.debug("arr3:"+arr3); console.debug("arr3.length:"+arr3.length);
后台结果显示:
1.2语法2: var arr=[初始数据列表];
- 容量看具体列表初始数据个数
- 可存放不同数据类型
var arr=[3,6,"lyf",true,"gsl",false,8]; console.debug(arr);
后台显示结果:
2.属性length:
- 设置或返回数组中元素的数目;
- 不代表实际存储数据的数量,也不代表容量限制,可以给length赋值来改变数组容量
3.键值对:
- 数组不仅可以使用非负整数作为索引下标,也可以使用字符串作为下标,称之为“key"(键)
- key不会对length属性产生影响,所以不适合使用for循环变量,应使用for...in循环;且for...in会自动跳过undefined的数据
var arr=new Array(3); arr[0]="Amy"; arr[2]="Tom"; arr["name"]="gsl"; console.debug(arr); console.debug(arr.length); console.debug("=============") for(var i=0;i<arr.length;i++) { console.debug(arr[i]); } console.debug("=============") for(var index in arr) { console.debug(arr[index]); }
后台运行结果:
4. 排序方法:sort()
- 默认按照字符顺序排列,非String类型会自动转换为String
- 可以使用回调函数作为参数来指定排序规则,用于排序规则的函数定义要求: 接受2个形参,如果大于0表示参数1大于参数2(此时sort方法会交换2个数),小于0表示参数2大于参数1,等于0则表示2个参数相等;
<script type="text/javascript"> var arr=["tony","Tommy","tom"]; console.debug("before sort:"+arr); arr.sort(); console.debug("after sort:"+arr); console.debug("---------"); var arr2=[10,3,"tt",45,7]; console.debug("before sort:"+arr2); arr2.sort();//按照数值转换后的字符串排序 console.debug("after sort:"+arr2); // 指定排序规则:一般约定俗成使用升序 arr2.sort(comp); console.debug("after sort(comp):"+arr2); // 用于排序规则的函数定义要求:接受2个形参,表示要比较的2个数 // 返回一个number: // 如果大于0表示参数1大于参数2, // 如果小于0表示参数2大于参数1, // 如果等于0,表示2个参数相等 function comp(a,b){ return a-b; } //如果return改写成b-a,则表示降序 </script>
后台运行:
4.反转方法:reverse()
将数据倒序排列,指位置,非字符大小
<script type="text/javascript"> var arr=new Array("tom","jerry","lucy","andy"); var arr1=[1,45,7,23,89,42,12]; arr.reverse(); console.debug("reverse:"+arr); arr1.reverse(); console.debug("reverse:"+arr1); </script>
后台结果:
5.栈操作
5.1 栈结构特点:先进后出(FILO)
5.2 push(newelement1,newelement2,...,newelementx);
从数组尾部取一个数据,数组长度减1,返回数组最后一个数据(即被删除的数据)
5.4 举例:
<script type="text/javascript"> var arr=new Array("tom","jerry","lucy","andy"); console.debug(arr.push("tonny","joe")); console.debug(arr); console.debug(arr.pop()); console.debug(arr); </script>
后台运行结果:
6.拼接操作
6.1 join(separator)
- array1...arrayx 可以是具体的值,也可以是数组对象,不过添加的是数组中的元素而非数组
- 返回拼接而成的新的数组
6.3 举例
<script type="text/javascript"> var arr1=new Array("tom","jerry","lucy","andy"); var arr2=new Array("tonny","joe"); var arrjoin1=arr1.join("-"); console.debug(arrjoin1); var arrjoin2=arr1.join(""); console.debug(arrjoin2); var arrconcat=arr1.concat(1,5,7,arr2,"ethan","peter") console.debug(arrconcat); </script>
后台显示结果:
7.其他方法
7.1 splice(index,howmany,item1,...,itemx)
<script type="text/javascript"> var arr1=new Array("tom","jerry","lucy","andy","ethan"); var newarr1=arr1.splice(2,0); console.debug(arr1); console.debug(newarr1); var newarr2=arr1.splice(2,1); console.debug(arr1); console.debug(newarr2); var newarr3=arr1.splice(2,1,"item1","item2","item3"); console.debug(arr1); console.debug(newarr3); </script>
后台结果:
7.2 slice(start,end)
<script type="text/javascript"> var arr1=new Array("tom","jerry","lucy","andy","ethan"); var arr2=new Array("tonny","joe","peter","ben"); var newarr1=arr1.slice(1,3); console.debug(arr1); console.debug(newarr1); var newarr2=arr2.slice(1,-1); console.debug(arr2); console.debug(newarr2); </script>
后台结果:
7.3 shift()/unshift()
<script type="text/javascript"> var arr1=new Array("tom","jerry","lucy","andy","ethan"); var newarr= arr1.shift(); console.debug(arr1); console.debug(newarr); var newlength=arr1.unshift("peter","amy"); console.debug(arr1); console.debug(newlength); </script>
后台结果: