标签:style blog http color io os ar 使用 java
ECMAScript Array
自我总结一下ECMA的数组吧,总感觉学的乱七八糟的,什么都知道,又好像什么都不知道一样!
最基本就是Array的创建、新增、删除。。。代码吧
1 <script type="text/javascript"> 6 var onUnload = function(){ 7 alert("你确定要离开此界面么?"); 8 } 9 10 var ary = new Array{"aa","bb","cc"}; 11 for(aaa in ary){ 12 document.write(aaa+"---"); 13 document.write(""); 14 } 15 16 17 var A= {}; 18 alert(A); 19 20 21 </script> 22 23 24 <script> 25 var ary = new Array(3); 26 ary[0] ="1"; 27 ary[1] ="1"; 28 ary[2] ="1"; 29 ary[3] ="1"; 30 ary[4] ="1"; // Array(3) 长度为3 而不是上限,如果超过三个,则默认给Arrayl里面Push 进去 31 //alert(ary); 32 33 34 var newa = new Array(1,2,2); ///// 不能使用var a = new Array(,,,); 35 36 // alert(newa.length); 37 ////////////////////// 38 39 var s = new Array("aa","a","aaa"); 40 s[2] = "sfsdf"; 41 // alert(s); 42 43 s[4] = "four"; 44 45 // alert(s); // 新增s[4] 46 47 s.length = 2; 48 // alert(s[4]); // undefined length 属性不是只读属性,相当于截取length位 49 50 s.unshift("add"); // 往数组第0位添加数据 51 52 s.push("push"); // 往数组末尾添加数据 53 54 s.splice("splice",5); // 将数据添加至数组的第n位置 71 var arr = new Array(3) 72 arr[0] = "George" 73 arr[1] = "John" 74 arr[2] = "Thomas" 75 76 var arr2 = new Array(3) 77 arr2[0] = "James" 78 arr2[1] = "Adrew" 79 arr2[2] = "Martin" 80 81 var mm = new Array(2); 82 mm[0] = "00"; 83 mm[1] = "02"; 84 mm[2] = "01"; 85 mm[3] = "03"; 86 alert(mm); 87 var aa = new Array(100); 88 document.write(aa.concat(mm)) 95 </script> 96 97
concat() 方法用于连接两个或多个数组。此方法返回一个新数组,不改变原来的数组。
var mm = new Array(2); mm[0] = "00"; mm[1] = "02"; mm[2] = "01"; var aa = new Array(10); document.write(aa.concat(mm))
检测数组
instanceof
typeof
constructor
alert(typeof(aa)); //Object alert(aa instanceof Array); //true alert(aa.constructor == Array); // true
转换方法
所有对象都有toLocaleString()、toString()和valueof()方法,
toString
其中调用数组的toString方法会返回由数组中每个值的字符串形式拼接而成的一个,以逗号相隔的字符串,代码吧
<script type="text/javascript"> var arr = new Array(1,2,3); alert(arr); alert(arr[1]); alert(typeof(arr)); //Object alert(arr instanceof Array); //true alert(arr instanceof String); //false 转换前不是String // toString alert(typeof(arr.toString())); //String </script>
valueOf
相比toString而言,valueOf()返回的仍是数组,代码吧
<script type="text/javascript"> var arr = new Array(1,2,3); alert(arr); alert(arr[1]); alert(typeof(arr)); //Object alert(arr instanceof Array); //true alert(arr instanceof String); //false // toString() alert(typeof(arr.toString())); //String // valueOf() alert(typeof(arr.valueOf())); //Object 转换后不变 alert(arr instanceof Array); //true alert(arr instanceof String); //false </script>
如上,显示的调用了toString和valueOf()方法,以便以字符串形式返回,每个值的字符串表示拼接成了一个字符串,中间以逗号分割。
另,调用alert()方法,需要接收字符串参数,所以在后台调用toString()方法,由此会得到与toString相同的结果。
toLocaleSting
使用toLocaleSting方法时候,调用的结果和前两种结果相同,但也不总是如此。当调用数组的toLocaleString()方法时候,他会创建一个数组值的以逗号分割的字符串。而与前两种不同之处在于,这一次为了取得每一项的值,调用的是每一项的toLocaleString()方法,而不是toString方法!还是那句话,代码吧
var str = { toString:function(){ return "normal"; }, toLocaleString:function(){ return "Locale"; } }; var str1 = { toString:function(){ return "normal01"; }, toLocaleString:function(){ return "Locale01"; } }; var strs = [str,str1]; // alert(strs); // normal,normal01 alert("typeof(strs) : "+typeof(strs)); //object alert("typeof(strs.toString()) : "+typeof(strs.toString())); //string alert("typeof(strs.toLocaleString()) : "+typeof(strs.toLocaleString())); //String alert("strs.toLocaleString() : "+strs.toLocaleString()); //locale,local01 调用Locale 而不是默认的toString
创建两个对象str1 str2,分别为每个对象添加方法toString和toLocaleString,并且使两个方法返回不同的值,用于检测是否调用默认的toString。
由strs数组包含此两类对象,alert结果:
alert(strs)本森时候,返回和显示调用toString相同的结果: normal,normal01
alert其type为Object
alert显示调用toString转换的字符串的type时候,返回String
alert 显示调用toLocaleString转换的字符串的type的时候,返回String
alert 显示调用toLocaleString转换的字符串,则得到的是由两个对象内部的toLocaleString方法而得的字符串: locale,locale01,原因是调用了数组每一项的toLocaleString()
Join
数组继承的toLocaleString、toString、valueOf方法,在默认情况下,都会以逗号分割的字符串的形式返回数组项。而如果使用了join方法,则可以使用不同的分隔符号来构建字符串!
join方法,只接受一个参数,即用作分隔符的字符串,并返回包含所有数组项的字符串!
var ww = ["w","x","90"]; document.write(ww.join(‘---‘)); // w---x---90
在使用join方法时候,重现了toString()方法的输出,在传递‘---’的情况下,得到以次分隔符分割的字符串组成的数组值。
另,如果不赋值,或者传入undefined的话,则采取默认!
栈方法
众所周知、栈是后进先出(LIFO),ECMA提供了一种让数组类似于其他数据结构的方法-- 栈!
是栈的话,那么就有压栈和出栈了,ECMA提供了此两种方法push()和pop!
push可以接受任意数量的参数,并逐个添加至栈的第length位,返回的长度就是len+length+1
pop,则是从数组的末尾移除最后一项,减少数组的length值,并返回移除的项。
var ww = ["w","x","90"]; document.write(ww.join(‘---‘)+"<br />"); var s = new Array(); var ad = s.push("ww","xx"); //返回位置2 alert(ad); ad = s.push("1990"); // 返回位置3 alert(ad);
var po = s.pop(); //默认获取最后一项
alert(po); //1990 //返回取得的数组的最后一项的值
alert(s.length); //2
队列方法
队列也不陌生,先进先出(FIFO)
。。。。。。。。
矮麻、下班了、回去接着写~~~~~
标签:style blog http color io os ar 使用 java
原文地址:http://www.cnblogs.com/oneMTime/p/4031545.html