-- 作者:admin
-- 发布时间:2010/12/3 11:50:38
-- 主题:js数组的完整说明
使用数组 基本操作 <script> var a=new Array("cctv","sxtv","tytv"); var a=new Array(3); var a=new Array(); a[0]="cctv"; a[1]="sxtv"; a[2]="tytv"; a[3]="xzy"; for(i=0;i<a.length;i++) document.writeln(a[i]); </script> 多维数组
<script> var rows= new Array(); rows[0]=new Array(5); rows[1]=new Array(5);
rows[0][0]="你好"; rows[0][1]="邢志云";
if(rows[0][0]!=null) { alert(rows[0][0]); }
</script>
数组赋值
可以像上边那样简单的依次赋值,也可以像下边的这样: <script> var xzy=new Array(); xzy=[1,2,3,4,5,"邢志云","嘿嘿"];//给数组xzy赋值 for(var i=0;i<xzy.length;i++) { alert(xzy[i]); } </script> 也可以直接赋值成多维数组 <script> var s=["你好",["中国","太原","邢志云"],[3,3333],[4,4444],[5,5555],["0",["a","b","c"]],"cc"]; // 0 1 2 3 4 5 6 // 10 11 12 20 21 30 31 40 41
alert(s);//你好,中国,太原,邢志云,3,3333,4,4444,5,5555 alert(s[1]);//中国,太原,邢志云 alert(s[1][2]);//邢志云 alert(s[2][0]);//3 alert(s[2][1]);//3333 alert(s[5][1][0]);//a alert(s[5][1][2]);//c alert(s[6]);//cc </script>
push:数据可以向最后的追加元素
var arr=new Array() arr[0]="xbc1"; arr[1]="bcx2"; arr[2]="cctv3"; arr[3]="xctv4"; arr.push("邢志云");//向最后追加,也可以同时push多个 arr.push("0123"); for(i=0;i<arr.length;i++) { if(arr[i]!=null) document.writeln(arr[i]); }
pop:弹出最后一个元素,后进先出
var arr=new Array(); var s; arr[0]="a1"; arr[1]="a2"; arr[2]="a3"; arr[3]="a4"; s=arr.pop();//弹出最后一个元素,把值付给s,并删除最后一个元素 alert(s); for(i=0;i<arr.length;i++) { document.writeln(arr[i]); } //显示: a1 a2 a3 unshift:插入到第一个之前,
var arr=new Array(); var s; arr[0]="a1"; arr[1]="a2"; arr[2]="a3"; arr[3]="a4"; arr.unshift("第一","第二");//插到第一个元素之前,后面的整体后移 for(i=0;i<arr.length;i++) { document.write(arr[i]+":"); } //显示: 第一:第二:a1:a2:a3:a4: ? shift:弹出第一个元素,先进先出 var arr=new Array(); var s; arr[0]="a1"; arr[1]="a2"; arr[2]="a3"; arr[3]="a4"; s=arr.shift();//弹出第一个元素,把值付给s,并删除第一个元素 alert(s); for(i=0;i<arr.length;i++) { document.writeln(arr[i]); } //显示: a2 a3 a4 join:利用数组的join方法,连接所有的数组内容
数组的join(string val)可以将数组元素连接起来,并且用中间插入val, 当在网页上交互显示下拉框内容的时候可以将内容加载到数组内,再利用innerHTML将内容显示在出来 <script> var a=new Array("cctv","sxtv","tytv"); var a=new Array(3); var a=new Array(); a[0]="cctv"; a[1]="sxtv"; a[2]="tytv"; a[3]="xzy"; document.writeln(a.join(\'<br>\'));//如果直接用a.join(),则默认会用,分割 </script> 显示: cctv sxtv tytv xzy 用这种方式连接字符串要比 s=s+”ddd”快的多 sort:数组排序 (从小到大)
var arr=new Array(1000) arr[0]="xbc1"; arr[1]="bcx2"; arr[2]="cctv3"; arr[5]="xctv4"; arr.sort(); for(i=0;i<arr.length;i++) { if(arr[i]!=null) document.writeln(arr[i]); } ? reverse:数组反向,和sort配合使用能实现从大到小排序 var arr=new Array() arr[0]="a1"; arr[1]="a2"; arr[2]="a3"; arr[3]="a4"; arr.push("邢志云"); arr.push("0123"); //arr.sort(); arr.reverse();//数组反向排列 for(i=0;i<arr.length;i++) { document.writeln(arr[i]); } //显示: 0123 邢志云 a4 a3 a2 a1
slice:数组截断后赋值给另外一个数组(不改变原始数组) var xzy1=new Array(); xzy1=["a","b","c","hello","usa","eng"]; // 0 1 2 3 4 5 var xzy2=xzy1.slice(2,4);//从数组xzy1的2号元素开始到4号元素停止的值结束转成一个数组 for(var i=0;i<xzy2.length;i++) { document.write(xzy2[i]+":");//显示c hello } 也可以这么写 <script> var xzy1=new Array(); xzy1=["a","b","c","hello","usa","eng"]; // 0 1 2 3 4 5 var xzy2=Array.prototype.slice.call(xzy1,2,4);//从数组xzy1的2号元素开始到4号元素停止的值结束转成一个数组 for(var i=0;i<xzy2.length;i++) { alert(xzy2[i]);//显示c hello } </script>
? splice:数组截断或清空(改变原始数组) var arr=new Array(); var s; arr[0]="a1"; arr[1]="a2"; arr[2]="a3"; arr[3]="a4"; arr[4]="a5"; arr[5]="a6"; var arr2=arr.splice(3,2,"x1","x2");//从3号开始的2个元素,用x1和x2替换,并把替换下的值重新赋给数组arr2 //如果没有参数"x1","x2",则对应的2个元素会从arr中删除,后面的前推 for(i=0;i<arr.length;i++) { document.write(arr[i]+":");//显示: a1:a2:a3:x1:x2:a6: } document.write("<br/>"); for(i=0;i<arr2.length;i++) { document.write(arr2[i]+":");//显示: a4:a5: } ? 利用splice来清空数组 var arr=new Array(); arr[0]="a1"; arr[1]="a2"; arr[2]="a3"; arr[3]="a4"; arr[4]="a5"; arr[5]="a6"; alert(arr.length);//显示6 arr.splice(0,100000000);//可以理解为把arr数组清空,又回到初始状态 alert(arr.length);//显示0
? concat:数组连接 var arr=new Array(); var s; arr[0]="a1"; arr[1]="a2"; arr[2]="a3"; arr[3]="a4"; arr[4]="a5"; arr[5]="a6"; var arr2=["b1","b2","b3"]; var arr3=arr.concat(arr2); for(i=0;i<arr3.length;i++) { document.write(arr3[i]+":");//显示: a1:a2:a3:a4:a5:a6:b1:b2:b3: } ? 使用Map map1: <script>
var map = {};
map["张三"] = "1362348754"; map["李四"] = "0351-98476345"; map["王五"] = "0358-4873622";
alert(map["李四"]); </script>
用map={}就可以把map清空; map2: <script>
var map = new Array();
map["张三"] = "1362348754"; map["李四"] = "0351-98476345"; map["王五"] = "0358-4873622";
alert(map["李四"]);//显示:0351-98476345 alert(map.length);//这里map.length显示为0
map[0] = "0358-4873622"; map[1] = "0358-4873622"; map[2] = "0358-4873622"; alert(map.length);//这里map.length显示为3 for(var i=0;i<map.length;i++) { document.write(map[i]); } alert(map["李四"]);//显示:0351-98476345 </script> map3: var map={"姓名":"邢志云","性别":"男","年龄":34} map.婚否="已婚";//可以动态添加 eval("map.国籍=\'中华\'");//但map.后面的标识符只能是以字符开头的,并且不能有-所以全球标识符不宜用在这里 alert(map.国籍); //alert(map.姓名);//邢志云 //alert(map.年龄);//34 map["民族"]="汉族";//也可以像第一条中那样赋值,但这种可以用任意串做键,如: map["1-2"]="汉族";alert(map.姓名+":"+map["1-2"]);//也能正常显示 alert(map.姓名+":"+map.民族); for(var colname in map) { alert(colname );//姓名 性别 年龄 婚否 } for(var colname in map) { alert(map[colname]);//邢志云 男 34 已婚 } 还可以这样 var s="\'姓名\':\'邢志云\',\'性别\':\'男\',35:\'年龄\'"; eval("var map={"+s+"}"); alert(map["姓名"]); 或者 var s="姓名:\'邢志云\',性别:\'男\',35:\'年龄\'"; eval("var map={"+s+"}"); alert(map["姓名"]); 还可以嵌套 var map= { "人员": { "张三":"男" ,"赵六":"女" } ,"车辆": { "桑塔纳":"6万" ,"别克":"10万" } ,"年龄":34 } alert(map.人员.赵六);//女 alert(map.车辆.桑塔纳);//6万 使用自定义的属性的数组 var a=new Array(); a[0]={}; a[0].姓名="邢志云"; a[0].年龄=32;
a[1]={}; a[1].姓名="李四"; a[1].年龄=28; for(var i=0;i<a.length;i++) { alert(a[i].姓名+":"+a[i].年龄); }
[此贴子已经被作者于2010-12-3 11:51:52编辑过]
|