数组的创建及length属性
<script type="text/javascript" charset="utf-8">// 数组创建方式一,此种方式写的时候比较麻烦var arr=new Array();// 数组创建方式二var arr= [1,2,3,4,true,'str',new Date()];console.log("arr.length:"+arr.length);console.log(arr);arr.length=5; // 指定组数长度后,数组长度以外的元素则会被裁减掉console.log("arr.length:"+arr.length+" ,arr:"+arr); console.log(arr[6]);/************************* 运行结果 *************************arr.length:7[1, 2, 3, 4, true, "str", Date {Thu Oct 15 2015 00:08:43 GMT+0800}]arr.length:5 ,arr:1,2,3,4,trueundefined**********************************************************/</script>
注意:数组的使用时注意如果指定了数据的长度的,则数组长度外的元素会被裁减掉(内存中被干掉)。
数组的 push 和 pop 方法
<script type="text/javascript" charset="utf-8">/*** 数组的 push 和 pop 方法* 和数据结构中的栈(先进后出)的操作一样,推入,压出*/var arr=[];arr.push(4); //推入arr.push(3,2);arr.push(2);var returnVal=arr.push(true); //返回值为新数组的长度arr.push(new Date())console.log(returnVal);console.log("arr.length: "+arr.length);console.log("arr: "+arr);arr.pop(); // 从数组尾部删除一个元素,返回值为移出的元素值console.log("arr.length: "+arr.length);console.log("arr: "+arr);/************************* 运行结果 *************************5arr.length: 6arr: 4,3,2,2,true,Thu Oct 15 2015 00:14:23 GMT+0800arr.length: 5arr: 4,3,2,2,true**********************************************************/</script>
注:pop() 和 push()对数据的操作是从数组的后面进行操作,与 shift () 和unshift() 操作位置正好相反(在数组的前面前面进行相应的移出和插入操作)。
数组的 shift 和 unshift 方法
<script type="text/javascript" charset="utf-8">/*** shift 和 unshift 方法* shift: 从数组前移出元素* unshift: 从数组前插入*/var arr=[3,5,7,true,new Date(),undefined,null];console.log("[操作前]: "+arr);var r1=arr.shift();console.log(arr);console.log(r1);var r2=arr.unshift(0);console.log(arr);console.log(r1);/************************* 运行结果 *************************[操作前]: 3,5,7,true,Thu Oct 15 2015 00:20:43 GMT+0800,,[5, 7, true, Date {Thu Oct 15 2015 00:20:43 GMT+0800}, undefined, null]3[0, 5, 7, true, Date {Thu Oct 15 2015 00:20:43 GMT+0800}, undefined, null]3**********************************************************/</script>
数组的 splice(拼接、接合) 和 slice方法
<script type="text/javascript" charset="utf-8">/*** splice(拼接、接合) 和 slice(切开、切下)方法* * splice(arg1,arg2,arg3...): 从arg1处截掉arg2个元素,再将arg3...之后的元素追加在截断的位置* arg1:操作的起始位置,从0开始* arg2:截掉元素个数* arg3:追加的元素* ... :追加的元素* 可以理解为子元素的替换,将arg1处开始后连续arg2个元素替换成 arg3、arg4、、、* * slice(startIndex,endIndex):截取并返回数组中索引从startIndex 到 endIndex的元素(左闭右开区间,不影响别操作的对象),类似于高级语言中的字符串求子串;* * 区别:splice 操作会影响操作的对象,slice则不会影响操作的对象* */var arr=[0,1,2,3,4,5,6,7,8];console.log("[操作前]: "+arr);var r1=arr.splice(1,2,33,44,55,88,99); //返回值为截掉的元素console.log("[操作返回值]: "+r1); //Array [ 1, 2 ]console.log("[操作后]: "+arr); //Array [ 0, 33, 44, 55, 88, 99, 3, 4, 5, 6, 7, 8 ]var arr=[0,1,2,3,4,5,6,7,8];console.log("[操作前]: "+arr);var r2=arr.splice(2,4); //从第2个索引位置开始截去4个元素,截取范围是左闭右开区间console.log("[操作返回值]: "+r2); //Array [ 2, 3, 4, 5 ]console.log(arr); //Array [ 0, 1, 6, 7, 8 ]var arr=[0,1,2,3,4,5,6];console.log("[操作前]: "+arr); //[操作前]: 0,1,2,3,4,5,6var result=arr.slice(2,5); //索引从2到5左闭右开区间的元素值,对被操作的对象无影响console.log("[操作返回值]: "+result); //[操作返回值]: 2,3,4console.log("[操作后]: "+arr); //[操作后]: 0,1,2,3,4,5,6/************************* 运行结果 *************************[操作前]: 0,1,2,3,4,5,6,7,8[操作返回值]: 1,2[操作后]: 0,33,44,55,88,99,3,4,5,6,7,8[操作前]: 0,1,2,3,4,5,6,7,8[操作返回值]: 2,3,4,5[0, 1, 6, 7, 8][操作前]: 0,1,2,3,4,5,6[操作返回值]: 2,3,4[操作后]: 0,1,2,3,4,5,6**********************************************************/</script>
数组的 concat 和 join方法
<script type="text/javascript" charset="utf-8"> /*** concat : 数组拼接* 注意:concat方法并不影响被操作对象本身* * join : 数组元素之间加入相应的连接元素然后返回最终的结果* 注意:join 方法也不影响被操作对象本身* */var arr1=[1,2,3];var arr2=[4,5,6];var result = arr1.concat(arr2);console.log("arr1: "+arr1); //arr1: 1,2,3console.log("arr2: "+arr2); //arr2: 4,5,6console.log("arr1.concat(arr2): "+result); //arr1.concat(arr2): 1,2,3,4,5,6var arr1=[1,2,3];var result = arr1.join('-');console.log("arr1: "+arr1); //arr1: 1,2,3console.log("arr1.join('-'): "+result); //arr1.concat(arr2): 1-2-3console.log("arr1[2]: "+arr1[2]); //3/************************* 运行结果 *************************arr1: 1,2,3arr2: 4,5,6arr1.concat(arr2): 1,2,3,4,5,6arr1: 1,2,3arr1.join('-'): 1-2-3arr1[2]: 3**********************************************************/</script>
数组的 sort 方法
<script type="text/javascript" charset="utf-8"> /*** sort(): 将数组类元素进行排序,排序方式是类似字典排序的方式来进行相应的排序,而不是按数学的由小到大排序* 注意:排序后影响被操作对象*/var arr1=[1,7,5,3,10];console.log("[操作前]:"+arr1); //[操作前]:1,7,5,3,10var result1=arr1.sort();console.log("[操作结果]:"+result1); //[操作结果]:1,10,3,5,7console.log("[操作后]:"+arr1); //[操作后]:1,10,3,5,7/************************* 运行结果 *************************[操作前]:1,7,5,3,10[操作结果]:1,10,3,5,7[操作后]:1,10,3,5,7**********************************************************/</script>
数组的 reverse方法
<script type="text/javascript" charset="utf-8"> /*** reverse(): 是将数组顺序颠倒过来*/var arr2=[5,1,8,3,5]; console.log("[操作前]:"+arr2);var result2=arr2.reverse(); //[操作前]:5,1,8,3,5console.log("[操作结果]:"+result2); //[操作结果]:5,3,8,1,5console.log("[操作后]:"+arr2); //[操作后]:5,3,8,1,5/************************* 运行结果 *************************[操作前]:5,1,8,3,5[操作结果]:5,3,8,1,5[操作后]:5,3,8,1,5**********************************************************/</script>
案例一:实现对数组的数学排序
<script type="text/javascript" charset="utf-8"> /*** 数学排序* 实现:对sort()方法给指定一个排序方式即可*/var arr1=[1,7,5,3,10];// 比较器function compare(var1,var2){if(var1<var2){return -1;}else if(var1>var2){return 1;}else{return 0;}}arr1.sort(compare);console.log(arr1); // Array [ 1, 3, 5, 7, 10 ]/************************* 运行结果 *************************[1, 3, 5, 7, 10]**********************************************************/</script>
以上代码的运行环境均是Firfox,输出结果到console中。